所以,我有这段代码:
import sys
while True:
print("Make sure the number of digits are exactly 12 : ")
x = input()
if str(x) == 12:
break
code = []
for i in range(12):
code[i] = int(x[i])
我希望程序重复这些行,“确保...... 12:”如果没有输入12位数字。之后,我将它们复制到一个数组中以访问它的每个元素,以进行非常基本的算术计算。我正朝着正确的方向前进吗?我是python的新手,我该如何解决这个问题?上面的代码显示以下错误。
Traceback (most recent call last):
File "C:\Users\Arjo\Desktop\hw2a.py", line 14, in <module>
code[i] = int(x[i])
IndexError: list assignment index out of range
答案 0 :(得分:3)
您不是使用x
创建输入数组,而是每次都覆盖它。你的比较也是错误的;您不希望看到x
的字符串是,12,但它的长度为12:
x = []
while True:
print("Make sure the number of digits are exactly 12 : ")
x.append(input())
if len(x) == 12:
break
答案 1 :(得分:1)
IndexError: list assignment index out of range
正在发生,因为您有一个空列表并且正在尝试更新第一个元素。由于列表为空,因此没有第一个元素,因此引发了异常。
解决此问题的一种方法是使用code.append(x[i])
,但在这种情况下有一种更简单的方法。默认的list
构造函数将完全按照您的需要执行
我想你可能想要这样的东西
while True:
print("Make sure the number of digits are exactly 12 : ")
x = input()
if len(x) != 12: # if the length is not 12
continue # ask again
code = list(x)
在输入正好12个字符之前,这将继续要求更多输入
答案 2 :(得分:0)
不,这看起来不会起作用...尝试更改此内容:
if str(x) == 12:
break
进入这个:
if len(str(x)) == 12:
break
希望有帮助...