Python统计程序无法输出预期结果,仅重复请求用户选择
问题排查与修复
你的代码存在两个核心问题,导致无法输出预期结果:
1. 缩进语法错误
if user_in == -1:这一行缩进层级错误,不符合Python的缩进规则,会直接触发语法错误,导致代码无法执行到后续功能逻辑。
2. 逻辑结构错误
你用for i in range(7)限制输入次数,且把核心功能处理逻辑放在for循环的else块中——这个else块仅在for循环完整执行7次、未被break中断时才会触发,完全不符合“接收用户选择、执行对应操作、直到输入-1退出”的需求。
修复后的代码
import statistics values = [12,22,56,44,33,25,18,5,33,66] print('#####################################################') print('Choose from the MENU to perform given task ') print('1- Calculate the mean value for the List') print('2- Calculate the median value for the List') print('3- Calculate the mode value for the List') print('4- Calculate the Range value for the List') print('5- Sort the values in ascending order in the List') print('6- Calculate the standard deviation for the List') print('-1 To EXIT') print('#####################################################') while True: try: user_in = int(input('What is your choice? ')) except ValueError: print('请输入有效的数字选项') continue if user_in == -1: print('EXIT is selected') break elif user_in == 1: mean_val = statistics.mean(values) print(f'Mean is {mean_val:.2f}') elif user_in == 2: median_val = statistics.median(values) print(f'Median is {median_val:.2f}') elif user_in == 3: mode_val = statistics.mode(values) print(f'Mode is {mode_val:.2f}') elif user_in == 4: range_val = max(values) - min(values) print(f'Range is {range_val}') elif user_in == 5: sort_val = sorted(values) print(f'Sorted {sort_val}') elif user_in == 6: sd_dev = statistics.stdev(values) print(f'Standard Deviation {sd_dev:.2f}') else: print('Invalid Entry')
关键修改说明
- 用
while True循环替代原for循环,实现持续接收用户输入直到主动退出。 - 修正缩进错误,确保代码块层级符合Python规则。
- 添加
try-except块处理非数字输入,避免程序崩溃。 - 移除每个功能分支里多余的
break,支持用户执行多次操作后再退出。 - 调整退出提示的位置,逻辑更清晰。
内容的提问来源于stack exchange,提问作者Joshuah Compton
相关产品推荐
相关产品推荐

