CS50P 问题集4 Little Professor练习程序无法自动退出引发check50错误求助
CS50P 问题集4 Little Professor练习程序无法自动退出引发check50错误求助
嘿,我来帮你排查这个问题!首先,check50报错说程序没自动退出,核心原因是你用了sys.exit(f"Score: {score}")来输出分数——这个函数是用来强制终止程序的,而题目要求的是正常打印分数后让程序自然结束,check50会认为这种提前退出的行为不符合要求,所以触发了错误。
另外,你的代码还有几个小问题,一起帮你修正:
1. 修复退出逻辑(解决check50的核心问题)
把最后一行的sys.exit(f"Score: {score}")直接改成普通的打印语句:
print(f"Score: {score}")
这样程序完成10道题的循环后,会正常打印分数,然后自动结束,完全符合check50的检测标准。
2. 修复数字生成的范围错误
你用range()的时候忽略了它是左闭右开的特性:
- level1需要生成0-9的数字,但
range(0,9)只到8,应该改成range(0, 10) - level2需要10-99,
range(10,99)只到98,改成range(10, 100) - level3需要100-999,
range(100,999)只到998,改成range(100, 1000)
修正后的generate_integer函数:
def generate_integer(level): # 0-9, 10-99, 100-999 if level == 1: numbers = range(0, 10) elif level == 2: numbers = range(10, 100) elif level == 3: numbers = range(100, 1000) return numbers
3. 修复输入处理的崩溃问题
当前代码里,如果用户输入类似12a这种混合字符的内容,answer.isalpha()会返回False,然后执行int(answer)时会直接抛出ValueError导致程序崩溃。我们需要用try-except来捕获这个异常,把所有非数字输入都视为错误:
修改循环内的输入处理逻辑:
while lifes > 0: answer = input(calculation) try: ans = int(answer) if ans == x + y: score += 1 break else: print("EEE") lifes -= 1 except ValueError: print("EEE") lifes -= 1
总结修改后的完整代码
把上面的修改整合后,你的代码应该能通过check50的所有检测,同时逻辑也更健壮:
import random levels = {'1','2','3'} random.seed(0) def main(): level = get_level() numbers = generate_integer(level) score = 0 for i in range(10): lifes = 3 x = random.choice(numbers) y = random.choice(numbers) calculation = f"{x} + {y} = " while lifes > 0: answer = input(calculation) try: ans = int(answer) if ans == x + y: score += 1 break else: print("EEE") lifes -= 1 except ValueError: print("EEE") lifes -= 1 if lifes == 0: print(f"{x} + {y} = {x + y}") print(f"Score: {score}") def get_level(): output = input("Level: ") while output not in levels: output = input('Level: ') return int(output) def generate_integer(level): # 0-9, 10-99, 100-999 if level == 1: numbers = range(0, 10) elif level == 2: numbers = range(10, 100) elif level == 3: numbers = range(100, 1000) return numbers if __name__ == "__main__": main()
备注:内容来源于stack exchange,提问作者user28961317
相关产品推荐
相关产品推荐

