Python:Int()Base 10的无效文字

我正在为某个项目编写代码来确定信用卡的有效性,但是我碰壁了,看来到目前为止我尝试过的所有方法都没有用。

这给了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'

更新:是的,您键入了“#”。这不是有效数字。

以上是 Python:Int()Base 10的无效文字 的全部内容, 来源链接: utcz.com/qa/400265.html

回到顶部