我正在解决这个问题。当我尝试时,代码运行良好。我可以输入级别,检查我的答案,然后程序打印出所需的答案。但是 check50 在进行单元测试时返回此消息,
“等待程序退出时超时”
应该有一个我错过的愚蠢错误。这是我写的代码。
import random
def main():
num_repeat = 10
score = 0
level = get_level()
while num_repeat > 0:
x = generate_integer(level)
y = generate_integer(level)
guess_remain = 3
try:
while guess_remain > 0:
answer = int(input(f'{x} + {y} = '))
if answer == x + y:
score += 1
break
else:
print('EEE')
guess_remain -= 1
if guess_remain == 0:
print(f'{x} + {y} = {x+y}')
continue
except ValueError:
print('EEE')
pass
else:
num_repeat -= 1
print(f'Score: {score}')
return 0
def get_level():
while True:
try:
level = int(input("Level: "))
if level in [1, 2, 3]:
break
except:
pass
return level
def generate_integer(digits):
if digits == 1:
min_num = 0
else:
min_num = 10 ** (digits - 1)
max_num = (10 ** digits) -1
rand_num = random.randint(min_num, max_num)
return rand_num
main()
我对我的代码尝试了很多修改。仍然无法通过检查50。
我再次检查了您的代码,没有发现任何明显的错误。 然而,有一件我之前没有提到的事情你可以尝试:
尝试使用
--debug
标志运行您的程序。* 这将告诉 check50 打印有关程序执行的更多详细信息。这可以帮助您识别“等待程序退出时超时”错误的来源。
要使用
--debug
标志运行程序,可以使用以下命令:
```
check50 --debug pset4/little/little
```
如果你的程序运行仍然遇到问题,你可以将你的代码发布到CS50论坛上并向其他学生或助教寻求帮助。
以下是解决问题的一些其他提示:
确保您的程序不会陷入无限循环。* 您可以使用调试器逐行单步调试代码,看看它在哪里陷入困境。
*确保您的程序没有在不应该等待的情况下等待用户输入。
*例如,如果您已经生成了随机数,则不应提示用户输入数字。
确保您的程序正确终止。* 例如,您的代码中间不应有任何
exit()
语句。
我希望这有帮助!