如何修改Python代码,使其正确判定答案并输出‘correct’?
Python数组反转验证代码错误排查与修复
问题原因
- 类型不匹配:
input()获取的用户输入是字符串类型,而arrayAns是列表类型,字符串和列表直接用==比较永远不会相等。比如用户输入[25,20,15,10,5]是字符串,正确答案是列表[25,20,15,10,5],类型不同直接导致判定错误。 - 原地修改的冗余问题:
array1.reverse()会直接修改原列表,arrayAns = array1只是让变量指向同一个列表对象,虽然不是本次错误的核心,但写法不够规范。
修复方案
核心是将用户输入的字符串转换为列表,确保和正确答案类型统一后再比较,同时优化反转列表的写法:
修正后的代码
array1 = [5, 10, 15, 20, 25] print("Question 2: What is the reverse of the following array?", array1) # 用切片生成反转后的新列表,不修改原数组 arrayAns = array1[::-1] user_input = input("Enter your answer: ") # 处理用户输入,转换为整数列表 try: # 去掉首尾的[]和空格,拆分每个元素 cleaned_input = user_input.strip().strip('[]') user_list = [int(num.strip()) for num in cleaned_input.split(',')] if user_list == arrayAns: print("You are correct") else: print(f"You are incorrect. The right answer is {arrayAns}") except ValueError: print("Invalid input format! Please enter like [25, 20, 15, 10, 5]")
关键改进点
- 用
array1[::-1]生成反转列表,原数组保持不变,逻辑更清晰。 - 将用户输入的字符串逐步处理成整数列表,确保和正确答案的类型、内容一致后再比较。
- 加入
try-except捕获格式错误,给用户明确的输入提示。
内容的提问来源于stack exchange,提问作者Ash
相关产品推荐
相关产品推荐

