CS50 Python 课程,小教授问题 - 为什么我的代码未通过"generate addition problems"测试?



问题要求用户输入1到3之间的级别。基于这个输入,随机选择1位、2位或3位整数,分别生成加法问题。我的代码似乎做得很好,但没有通过检查。显示的代码错误是:

:( At Level 1, Little Professor generates addition problems using 0–9
Did not find "6 + 6 =" Choose Level "C: 8 + 7 = "
:( At Level 2, Little Professor generates addition problems using 10–99
Did not find "59 + 63 =" in "Choose Level: 85 + 78 = ..."
:( At Level 3, Little Professor generates addition problems using 100–999
Did not find "964 + 494 =" in "Choose Level: 859 + 782 ..."
下面是我的代码:
import random
def main():
level = get_level()
score = 0
for i in range(10):
x, y = generate_integer(level)
answer = x + y
for j in range(3):
print(x, "+", y, "= ", end="")
guess = int(input())
if guess == answer:
score = score + 1
break
elif guess != answer and j == 2:
print(x, "+", y, "=", answer)
break
else:
print("EEE")
print("Score:", score)

def get_level():
while True:
try:
n = int(input("Choose Level: "))
if 1 <= n <= 3:
return n
except ValueError:
pass
def generate_integer(level):
if level == 3:
return random.choices(range(100, 1000), k=2)
elif level == 2:
return random.choices(range(10, 100), k=2)
elif level == 1:
return random.choices(range(0, 10), k=2)
else:
raise ValueError
if __name__ == "__main__":
main()

我尝试了使用Python 3.10的代码,它运行没有问题。但是,您的代码在Python 2中确实存在问题,即:

  • print的可选参数end不可用。
  • choices不属于random
  • 打印操作的格式现在包括不需要的(等。

一旦我删除了end并用一些随机的二元组替换了对choices的调用,代码运行得很好。

您提供的输出(我假设是任何测试代码调用您自己的代码所给出的输出)没有提供任何有用的细节。我的猜测是,该测试使用了Python 2,由于上面提到的问题而失败。如果您不能直接访问测试代码,请调整您自己的代码以在Python 2中运行。如果您确实有访问权限,请使用python3显式运行它。

相关内容

  • 没有找到相关文章