python 'int'不支援索引

3j86kqsm  于 2022-11-27  发布在  Python
关注(0)|答案(2)|浏览(218)

我试图为一个包含16个数字的字符串做一个循环,想法是将所有成对的数字相乘 *2,但在这样做的同时,我得到了一个字符串错误。我尝试了几种方法,但没有成功。

cardNumber = input("Enter a 16-digit card number:")
cardNumber = int(cardNumber.replace(" ",""))
#cardNumber = str(cardNumber)
print(cardNumber)
i = 0
for i in range(0, 16, 2):
  cardNumber[i] *= 2
  print(cardNumber)

你能帮我理解这个简单的问题吗?我不明白为什么不允许它。
谢谢你的帮助

scyqe7ek

scyqe7ek1#

您可以将cardnumber转换为整数,例如4137894711755904。整数没有“数字位置”,因此cardNumber[i]无法工作。此索引适用于字符串,但不适用于数字类型。
您可以将字符串转换为整数列表,例如:

card_number= input("Enter a 16-digit card number:")
digits = list(map(int, list(card_number.replace(" ","")))) 
# Line above is short for [int(i) for i in list(card_number.replace(" ",""))]

现在索引工作正常了。要重新得到一个整数,你可以加入列表并再次转换为int,例如:

number = int(''.join(map(str, digits)))
f87krz0w

f87krz0w2#

以下内容可能符合您的要求:)

cardNumber = input("Enter a 16-digit card number:").replace(" ","")
numbers = [ int(x) for x in cardNumber ]
i = 0
for i in range(0, 16, 2):
  numbers[i] *= 2
  
print(numbers)

var = '' 
#iterate over the list elements
for element in numbers: 
    # converting integer to string and adding into variable
    var += str(element)
 
# converting back into integer and printing the final result
print(int(var))

相关问题