Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:Int()基10的文本无效_Python_Literals_Base - Fatal编程技术网

Python:Int()基10的文本无效

Python:Int()基10的文本无效,python,literals,base,Python,Literals,Base,我正在为一个项目编写代码,以确定信用卡的有效性。我遇到了一个难题,似乎到目前为止我尝试过的所有方法都不起作用 这给了我一个sumofodds函数的错误,其中j=int(卡[i]) 错误为“基数为10的Int()的文本无效” 有人能给我一些建议吗 def sumofdoubles(): card=input() x=len(card) summ=0 for i in range(x-2,-1,-2): j=int(card[i])

我正在为一个项目编写代码,以确定信用卡的有效性。我遇到了一个难题,似乎到目前为止我尝试过的所有方法都不起作用

这给了我一个sumofodds函数的错误,其中j=int(卡[i])

错误为“基数为10的Int()的文本无效”

有人能给我一些建议吗

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()
def sumofdoubles():
卡片=输入()
x=透镜(卡片)
总和=0
对于范围(x-2,-1,-2)内的i:
j=int(卡[i])
u=j+j
如果u>9:
h=u/2
总和=总和+h
返回(总和)
def sumofens():
卡片=输入()
x=透镜(卡片)
总和=0
对于范围(x-2,-1,-2)内的i:
j=int(卡[i])
u=j+j

如果是这样,不管你做了什么,你输入的东西实际上不是一个以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'
>>int('04.9')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ValueError:基数为10的int()的文本无效:“04.9”
>>>int('4-')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ValueError:基数为10的int()的文本无效:“4-”
>>>int(“杰克”)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ValueError:以10为基数的int()的文本无效:“Jack”

更新:是的,您键入了一个“#”。这不是一个有效的号码。

您每次进入
sumofodds
sumofevens
、或
sumofodoubles
,都会呼叫
input
,所以他们每个人都会使用一个单独的信用卡号。您可能只想在
main
和sh中呼叫
input
应该将
卡作为参数传递给其他每个函数

然后,您的函数可能如下所示:

def sum_of_odds(card):
    x = len(card)
    # ...

# ...

def main():
    while True:
        card = input()
        if card == '#####':
            break
        odds = sum_of_odds(card)
        # ...

什么是完全回溯?您在控制台中键入了什么?在其中一个
j=int(card[i])
上调用输入(即,卡的第i个字符)不是一个有效的整数。我猜它是一个破折号或空格,两者中的任何一个都会产生错误。如果没有更多详细信息,很难准确判断。看起来你键入了一个
,它不是一个数字……我需要使用“#####”作为我的sentinel值,但在这种情况下,你需要添加一个测试(即
if
语句)对于
int()之前的sentinel值
如果找到,请调用并采取适当的操作。是否可以将输入置于所有函数之外,因为我已经尝试过,并且遇到了错误,例如:未绑定本地错误:以前引用过卡assignment@James:当然可以使用全局设置,但这些都是不好的做法;我编辑了我的答案,以显示一些d使用参数。@James它并没有像您想象的那样工作。Python是一种命令式语言。它只会在达到测试时检查卡值。它不会在任何其他时间检查卡值。
def sum_of_odds(card):
    x = len(card)
    # ...

# ...

def main():
    while True:
        card = input()
        if card == '#####':
            break
        odds = sum_of_odds(card)
        # ...