这是我的第一个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)
numero
和int(cadena)
一样吗?
谢谢!
答案 0 :(得分:1)
您正在选择cadena
和numero
的一部分,可以索引到string
(cadena
),但不能索引到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