Python程序while循环逻辑错误导致得分统计异常问题求助
问题诊断与修复
你的程序核心问题出在ten_questions函数的逻辑上:
- 第一题的答题结果被存在
correct_answers变量里,但后续循环中,每次调用question_generator都没有捕获它的返回值,反而一直用第一题的结果来判断是否加分。 - 循环条件
num_of_questions <=8会执行9次循环,加上之前的第一题刚好是10题,但循环内的加分逻辑完全错误,只根据第一题的结果重复加减分。
另外question_generator函数也有逻辑漏洞:只有第一次答对才返回True,后续答对没有返回值,会导致后续题目无法统计正确结果。
具体修复步骤
- 修正
question_generator的返回逻辑:无论第一次还是后续答对,都返回True;如果三次答错,返回False,确保每道题的结果都能被正确捕获。 - 重构
ten_questions的循环逻辑:用循环直接生成10道题,每道题都捕获答题结果,根据结果累加分数,不需要单独处理第一题。
修正后的完整代码
import random def main(): ten_questions() def get_level(): while True: try: level_input = int(input("Level: ")) if level_input in [1,2,3]: return level_input except: pass def integer_generator(level): if level == 1: x = random.randint(0,9) y = random.randint(0,9) elif level == 2: x = random.randint(10, 99) y = random.randint(10, 99) else: x = random.randint(100, 999) y = random.randint(100, 999) return x, y def question_generator(x, y): real_answer = x + y wrong_counter = 0 while True: try: answer_given = input(f"{x} + {y} = ") answer_int = int(answer_given) if answer_int == real_answer: return True else: if wrong_counter < 2: print("EEE") wrong_counter +=1 else: print(f"{x} + {y} = {real_answer}") print("False, that was last attempt") return False except ValueError: print("EEE") pass def ten_questions(): total_correct_answers = 0 my_level = get_level() for _ in range(10): x, y = integer_generator(my_level) if question_generator(x, y): total_correct_answers +=1 print(f"Score: {total_correct_answers}") if __name__ == "__main__": main()
修复说明
question_generator现在统一返回True(答对)或False(答错),确保每道题的结果都能被正确统计。ten_questions用for _ in range(10)直接生成10道题,每道题都调用question_generator并根据返回值加分,逻辑清晰且准确。- 优化了字符串拼接为f-string,代码更简洁。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

