0

だから、私はこのコードスニペットを持っています:

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
4

3 に答える 3

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
于 2013-02-08T03:41:25.817 に答える
1

IndexError: list assignment index out of range空のリストがあり、最初の要素を更新しようとしているために発生しています。リストが空であるため、最初の要素がないため、例外が発生します。

この問題を修正する1つの方法はを使用する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文字が入力されるまで、さらに入力を求められます。

于 2013-02-08T03:56:23.893 に答える
0

いいえ、これはうまくいかないようです...これを変更してみてください:

if str(x) == 12:
      break

これに:

if len(str(x)) == 12: 
    break

それが役立つことを願っています...

于 2013-02-08T03:42:06.090 に答える