首页 > 解决方案 > Python,循环 - 代码结果与预期结果不匹配

问题描述

我正在尝试为数学的基本加法(+)制作一个程序。我的代码如下:

   import random

   Totalrounds = input("Input how many rounds you want try? ")

   answerlist = list()


   for i in range(0, int(Totalrounds)):
        numb1 = random.randint(0,9)
        numb2 = random.randint(0,9)            
        print(numb1, "+" , numb2,)
        Answer = int(input("Your answer is? " ))

        if Answer == numb1 + numb2 :
              print("Your answer is correct")
              print()
        else:
              print("Your answer is wrong")
              print("the right answer is ", numb1 + numb2)
              print()  

        answerlist.append(Answer)

   #Result

   print("this is your Answersheet from" ,Totalrounds, "question")

   for i in range(0, len(answerlist)):
      if answerlist[i] == numb1 + numb2 :
         Result1 = "correct"
         print (numb1, "+" , numb2, "=" ,answerlist[i], Result1 ,)
      else:
         Result1 = "wrong"
         print (numb1, "+" , numb2, "=" ,answerlist[i], Result1 ,)

如果我将总轮数放在 5 左右,在#result 打印上,问题 1 - 4 的数字将与上面的列表不同。谁能告诉我我在这段代码中做错了什么,我该怎么做才能让它像上面的问题一样?问题 = numb1 "+" numb2

谢谢你的帮助

标签: pythonpython-3.x

解决方案


在您的代码中有几件事是有问题的或与样式相关的。

在第二个for循环中,您尝试访问numb1/numb2但它们不相关,因为第一个for循环的每次迭代都会更改它们,因此为了克服这个问题,您还需要存储它们。

无需设置range从 0 开始,这是默认值。

启动时list不需要做list()[]足够了。

对您的代码的更正如下:

import random

Totalrounds = input("Input how many rounds you want try? ")

answerlist = []
numb1_list = []
numb2_list = []


for i in range(int(Totalrounds)):
    numb1 = random.randint(0,9)
    numb1_list.append(numb1)
    numb2 = random.randint(0,9)
    numb2_list.append(numb2)
    print(numb1, "+" , numb2,)
    Answer = int(input("Your answer is? " ))
    if Answer == numb1 + numb2 :
          print("Your answer is correct")
          print()
    else:
          print("Your answer is wrong")
          print("the right answer is ", numb1 + numb2)
          print()

    answerlist.append(Answer)

#Result

print("this is your Answersheet from" ,Totalrounds, "question")

for i in range(len(answerlist)):
  if answerlist[i] == numb1_list[i] + numb2_list[i] :
     Result1 = "correct"
     print (numb1_list[i], "+" , numb2_list[i], "=" ,answerlist[i], Result1 ,)
  else:
     Result1 = "wrong"
     print (numb1_list[i], "+" , numb2_list[i], "=" ,answerlist[i], Result1 ,)

推荐阅读