不确定如何修复此错误Luhn算法PYTHON

不确定如何修复此错误Luhn算法PYTHON,python,luhn,Python,Luhn,好,, 所以我想我就快到了, 我的第一/第二部分在它们单独工作时工作得很好,但我很难将两者结合起来 这就是我目前所拥有的 我想错误在最后一点, 对不起,我是python新手,所以我希望很快掌握它的窍门 Edit3:我已经让它工作了(在你们的帮助下),但现在当我输入3782246310050时,它应该是无效的美国运通,但它显示为有效的美国运通 Edit1:好吧,比如当我发布0378282246310005(一个假的美国运通卡)时,它说 在注释#下的控制语句中,找出用户拥有的信用卡,变量cardTy

好,, 所以我想我就快到了, 我的第一/第二部分在它们单独工作时工作得很好,但我很难将两者结合起来 这就是我目前所拥有的 我想错误在最后一点, 对不起,我是python新手,所以我希望很快掌握它的窍门

Edit3:我已经让它工作了(在你们的帮助下),但现在当我输入3782246310050时,它应该是无效的美国运通,但它显示为有效的美国运通

Edit1:好吧,比如当我发布
0378282246310005
(一个假的美国运通卡)时,它说


在注释
#下的控制语句中,找出用户拥有的信用卡
,变量
cardType
在每个分支中定义,除了
else
。由于名称从未在control语句的范围之外定义,因此当代码跟随if语句的else分支时,当您尝试访问变量时,解释器会给您一个NameError

要解决这个问题,你可以做一些不同的事情。当
CardNumber
无效时,您可以为
cardType
创建一个特殊值,并在下一个控制语句中检查该值:

if ...:
    ...
else:
    cardType = "some special value"

if cardType == "some special value":
    ...
try:
    print(cardType)
except NameError:
    print("invalid card number")
或者您可以使用try/except语句:

if ...:
    ...
else:
    cardType = "some special value"

if cardType == "some special value":
    ...
try:
    print(cardType)
except NameError:
    print("invalid card number")

编辑:您还应该注意,当前
total
变量将始终为
0
,因为for循环实际上没有运行。如果要减小范围,第一个参数应大于第二个参数,否则range函数只会创建一个空列表。

请澄清目前哪些参数不起作用?显示完整的堆栈跟踪。如果您没有任何错误,您会得到哪些不符合预期的输出?你想把一本书放在一起,以帮助读者知道如何帮助你。我添加了编辑!这是一个小问题,与你的问题并不相关,但是你应该考虑保留CaseCaseNeNes用于类名而不是变量名。这是几乎所有语言的标准。好吧,这是有道理的,但现在我感到困惑。我如何让python知道“else”表示上面没有列出的任何内容?我以为这就是“其他”的意思?我知道我想的是错误的:/@NatalieRenee只需在条件语句之前为
cardType
创建一个默认值。也许答案中可以提供一个例子来说明问题,或者我的答案不清楚。我将对其进行更改,以显示如何修复它的一些示例您只需要在else语句中定义
cardType
,例如
cardType='Your card is'
更好的方法是在输入条件语句之前实际声明变量。