【问题标题】:'int' does not uspport indexing\'int\' 不支持索引
【发布时间】:2022-11-27 18:47:45
【问题描述】:

我正在尝试为包含 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)

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

谢谢您的帮助

【问题讨论】:

  • 请分享您的输入、您得到的错误以及预期的输出
  • 输入:1111 1111 1111 1111 / 我预计:2121212121212121 感谢您的帮助。
  • 因为你将 cardNumber 转换为一个整数,正如它所说,你不能索引整数
  • 没有办法说“给我 1234 的第 3 位数字”,或者至少不能使用一般索引。你可以要求“1234”的第三个字符(作为一个字符串,但它不再是一个字符串)
  • 如果我转换为字符串,它会显示 TypeError: 'str' does not support item assignment on line 11 in main.py,为什么?

标签: python string integer


【解决方案1】:

您将 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)))

【讨论】:

    猜你喜欢
    • 2013-08-23
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 2019-08-18
    • 2014-04-23
    • 2019-11-12
    • 2018-10-29
    相关资源
    最近更新 更多