请注意,我是一个非常困惑的初学者,但我很喜欢这门课程并且渴望学习。 下面是我的代码,我想了解一些事情:
为什么如果我定义 main ,我会收到多个错误,例如:“名称'card'未定义”,而如果我不定义 main ,一切都会顺利进行?
我复制了 split_to_digits 函数,据我所知,我假设它返回一个列表,所以我试图循环遍历列表“everyotherdig”来对数字求和,但如果我尝试打印总和,它会显示“内置函数 sum” ”
我肯定犯过的任何其他错误,如果您愿意向我解释,我将非常感激。
# get user input
while True:
try:
card = int(input("Credit card number:"))''
if card > 0:''
break
except ValueError:
print("INVALID")
#Convert card back into a string
card = str(card)
if len(card) not in (13,15,16):
print("INVALID")
#Store valid prefixes into a tuple
prefixes = ["4","34","37","50","51","52","53","54","55"]
#Check if user input is valid
x = card.startswith(tuple(prefixes))
if x == False:
print("INVALID")
def split_to_digits(card):
return [int(i) for i in str(card)]
#Store every other digit into a list
everyotherdig = split_to_digits(card[-2::-2])
allotherdig = split_to_digits(card[-1::-2])
#Loop through string to apply Luhn's algorith
for i in everyotherdig:
if everyotherdig[i] > 5:
sum = split_to_digits(everyotherdig[i]) * 2
else:
sum1 = everyotherdig[i] *2
print(f"{sum}")
我成功地获取了用户输入并获取了我需要的卡号。 现在我需要应用Luhn算法来计算卡号是否有效。 为此,我需要将每个其他数字乘以 2,从数字的倒数第二个数字开始,然后将这些产品的数字加在一起。 将总和与未乘以 2 的数字之和相加。
为什么如果我定义 main ,我会收到多个错误,例如:“名称'card'未定义”
这听起来像是一个常规的全局局部变量错误。在Python中,除非你说一个变量是全局的,否则当你设置一个变量时,Python会假设它是局部的,并且不在函数中定义它会导致“未定义”问题。要将函数声明为全局函数,您可以使用
global variableName
在函数内部。