2017-09-18 20 views
0

この場合、私の初期forループの 'num'は数字のリストを反復処理します。 intオブジェクトが反復可能でないというエラーがなぜ発生するのか分かりません。誰かがここで何が問題なのか説明することはできますか?TypeError: 'int'オブジェクトは反復不可能です - forループのカウンタ変数の機能は何ですか?

import random 

base_num = [] 
for _ in range(3): 
    base_num.append(random.randint) 

while True: 
    cow = 0 
    bull = 0 
    num_to_compare = input("what would you like to guess?") 
    num_list = [int (d) for d in str(num_to_compare)] 
    if num_to_compare == base_num: 
     break 
    else: 
     for num in len(num_list): 
      for base in len(base_num): 
       if num_list[num] == base_num[num]: 
        cow += 1 
       elif num_list[num] == base_num[base]: 
        bull += 1 
    print cow, bull 
+1

である 'random.randint'は')( 'random.randintでなければならないstrあるため、再び@DYZが指摘としてnum_to_compare == base_numは常にFalseを与えます。また、 'num_to_compare'は' base_num'と決して等しくありません。なぜなら、一つは文字列であり、もう一つはリストであるからです。 – DyZ

答えて

1

for num in len(num_list):

これは本質的for num in 3:又はintであり、反復することができない3以外の数(あなたnum_listlen)を意味します。これは、エラーがあなたに伝えるものです。

あなたがやりたいことがあります

for num in num_list:あなたはnum_listの各項目を反復処理したい、または

for num in range(len(num_list)):場合は、インデックス

に反復処理したい場合は、また、約読みたいと思うかもしれませんenumerate

同じ行のために行く: for base in len(base_num):

このことであれば@DYZは、コメントしているとして、これとは別に

base_num.append(random.randint)あなたは、リスト内のいくつかのランダムな数字を追加したい

またnum_list = [int (d) for d in str(num_to_compare)]num_list = [int (d) for d in num_to_compare]すでにstr

を編集しているnum_to_compareとすることができあなたは、ランダムな番号を取得する場所、それがbase_num.append(random.randint(a, b))をする必要がありますNa<=N<=b

randint doc

こと

num_to_comparebase_numlist

関連する問題