我正在为某个项目编写代码来确定信用卡的有效性,但是我碰壁了,看来到目前为止我尝试过的所有方法都没有用。
这给了sumofodds函数一个错误,其中j = int(card [i])
错误是“无效的文字为Int()与Base 10
有没有人可以给我一些帮助?
def sumofdoubles(): card=input() x=len(card) summ=0 for i in range(x-2,-1,-2): j=int(card[i]) u=j+j if u>9: h=u/2 summ=summ+h return(summ) def sumofevens(): card=input() x=len(card) summ=0 for i in range(x-2,-1,-2): j=int(card[i]) u=j+j if u<9: summ=summ+u return(summ) def sumofodds(): summ=0 card=input() x=len(card) for i in range(x-1,-1,-2): j=int(card[i]) summ=summ+j return(summ) def main(): card=input() length=len(card) summ=0 while(card!="#####"): if (card[0]=='4' or card[0]=='5' or card[0]=='6' or (card[0]=='3' and card[1]=='1')): dbls=sumofdoubles() evens=sumofevens() odds=sumofodds() if((dbls+evens+odds)%10==0): print("Valid") main()
这是那些想知道的人的完整追溯
python test.py<s.input File "test.py", line 52 in <module> main() File "test.py", line 48, in main odds=sumofodds() File "test.py", line 33, in sumofodds j=int(card[i]) ValueError: invalid literal for int() with base 10: '#'
好吧,无论您输入什么内容,实际上都不是以10为底的数字。这包括非数字字符或空格的任何内容。所以不要输入。:-)
例子:
>>> int('04.9') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '04.9' >>> int('4-') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '4-' >>> int("Jack") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: 'Jack'
更新:是的,您键入了“#”。这不是有效数字。