TypeError:“ int”对象不可下标,键入错误

时间:2019-09-10 19:37:49

标签: python python-3.x

这是我的第一个stackoverflow线程,我怀疑为什么我的代码可以工作而其他代码不能工作,这似乎是相同的,我希望得到任何答复,谢谢!

无效代码:

import sys

print(sys.argv)
if len(sys.argv) == 2:
    longitud = len(sys.argv[1])
    numero = int(sys.argv[1])
    cadena = str(numero)
    if numero > 0 and numero < 10000:
        print("The length is:",longitud)
        for r in range(longitud):
            print("{:04d}".format(numero[::-1][r]) * 10 ** r)
    else:
        print("Error")
else:
    print("Error")

工作代码:

import sys

print(sys.argv)
if len(sys.argv) == 2:
    longitud = len(sys.argv[1])
    numero = int(sys.argv[1])
    cadena = str(numero)
    if numero > 0 and numero < 10000:
        print("The length is:",longitud)
        for r in range(longitud):
            print("{:04d}".format(int(cadena[::-1][r]) * 10 ** r))
    else:
        print("Error")
else:
    print("Error")

唯一的变化是在第11行,在第一行我放format(numero),在第二行我放int cadena,但它们基本上是相同的

numero = int(sys.argv[1])
cadena = str(numero)

numeroint(cadena)一样吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您正在选择cadenanumero的一部分,可以索引到stringcadena),但不能索引到int({ {1}})。您无法选择numero的一部分。例如:

int

您可以从字符串中选择第二个和第三个字母(例如sys.argv == ['1232', '12324'] numero = int(sys.argv[1]) # numero == 1232 cadena = str(numero) # cadena == '1232' ),而不能从整数中选择第二个和第三个字母(例如cadena[1:4] == '23')。整数不可索引,而字符串不可索引。

编辑: 这也应该起作用,并且可以将您的工作顺序分解为更好的numero[1:4] == error

cadena