gpt4 book ai didi

python - 我的代码是错误的(str(1元素)列表转换为int)错误ValueError : invalid literal for int() with base 10: "[' 2']"

转载 作者:太空宇宙 更新时间:2023-11-03 18:38:32 24 4
gpt4 key购买 nike

我想要一个程序,你可以在其中介绍信用卡号,并说明是否有效以及运营商是什么,但现在我遇到了字符串问题,这是代码,抱歉非常困惑:

number =raw_input("numero?")

#revisa las posiciones
number=number.split()
def check_sum(number):
d = 0
pe =str(number[0:1:1])
posicion_impar = number[1::2]
posicion_par= number[0::2]
for x in posicion_par:
f = int(x)
d += f
for i in posicion_impar:
z = int(i)
if z < 5:
d += z*2

elif z == 6:
d = d + 3
elif z == 7:
d += 5
elif z == 8:
d += 16
elif z == 9:
d += 18

if d % 2 != 0 and d % 5 != 0 :
print "invalid"

elif int(pe) == 4 and len(number)== 17 or len(number) == 14 :
return "Visa"


elif len(number) == 15 and int(pe) == 3:
#american express 15
return "American Express"

elif len(number) == 17 and int(pe) == 5:
return "Master-Card"




print check_sum(number)

到目前为止的基本规则,如果是签证,总是以 4 开头,有 13 或 16 个数字如果万事达卡有 16 个数字并且总是以 5 开头如果美国运通卡始终以 3 开头并且有 14 个数字

    error:
File "work.py", line 33, in check_sum
elif int(pe) == 4 and len(number)== 17 or len(number) == 14 :
ValueError: invalid literal for int() with base 10: "['2']"

最佳答案

number =raw_input("numero?")

此时number是一个字符串。

number=number.split() 

现在number是一个字符串列表。这是您作为参数传递给 check_sum 函数的内容。

pe =str(number[0:1:1])

number[0:1:1] 是列表 number 的一部分,包含单个元素(第一个元素)。您可以将其写为[number[0]],即创建一个包含一个元素的新列表,该元素是number的第一个元素。调用 str 构建该列表的字符串表示形式:例如,如果 number 的第一个元素是字符串 "1234",则 pe 设置为 8 个字符的字符串 "['1234']"

如果您想让 pe 成为字符串列表 number 的第一个元素。因此:

pe = number[0]

如果您想让 pe 成为输入中的第一个数字,那么它将是第一个单词的第一个字符:

pe = number[0][0]

我认为您的代码中还有其他缺陷,例如 len(number) 是拆分列表的长度,而不是输入中的位数。如果您希望输入仅为数字,请不要调用 split,以便 number 是输入字符串,它是字符列表(最后没有换行符)。

关于python - 我的代码是错误的(str(1元素)列表转换为int)错误ValueError : invalid literal for int() with base 10: "[' 2']",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21079066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com