关于python循环的基本查询

时间:2013-02-08 03:37:22

标签: python python-3.x

所以,我有这段代码:

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

3 个答案:

答案 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

希望有帮助...