Python循环条件失效求助:有效分数被误判为无效
解决你的Python作业分数输入问题
嘿,我明白你现在的困扰啦——明明输入了像1这样的有效分数,程序却还说“invalid score”,这大概率是输入类型不匹配搞的鬼!
问题根源
你定义的valid_scores里都是整数(比如0、1这些),但input()函数获取到的用户输入默认是字符串类型。举个例子:你输入1,程序拿到的其实是"1"(带引号的字符串),它和列表里的整数1不是同一个东西,自然会被判定为无效分数。
修复方案+完整代码
我给你调整了代码,既解决了输入类型的问题,还加了非数字输入的容错处理,同时满足6组每组5个分数的需求:
# 定义有效的分数范围 valid_scores = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 循环处理6个组别 for group_num in range(1, 7): print(f"\n=== 第 {group_num} 组分数录入 ===") current_group_scores = [] # 每组录入5个有效分数 while len(current_group_scores) < 5: try: # 把输入转换成整数,解决类型不匹配问题 score = int(input("请输入0-10之间的分数:")) if score in valid_scores: current_group_scores.append(score) print(f"已录入分数:{score}") else: print("invalid score!请输入0到10之间的整数哦") except ValueError: # 处理用户输入非数字的情况,避免程序崩溃 print("请输入有效的整数分数,别输字母或符号呀!") # 计算当前组的总和与平均值 total_score = sum(current_group_scores) avg_score = total_score / len(current_group_scores) print(f"\n第 {group_num} 组统计结果:") print(f"分数总和:{total_score},平均值:{avg_score:.2f}")
关键改动说明
- 用
int(input(...))把用户输入的字符串转成整数,这样就能和valid_scores里的整数正确匹配了 - 加入
try-except块,防止用户输入字母、符号时程序直接报错崩溃 - 用
while len(current_group_scores) <5确保每组必须录入满5个有效分数才会进入下一组
这样调整后,你输入1、5这些有效分数就不会再被误判啦,还能顺利完成6组数据的统计~
内容的提问来源于stack exchange,提问作者lolly
相关产品推荐
相关产品推荐

