Python新手求助:用if语句处理percent数组生成grade数组出错
问题分析与解决方案
嘿,我一眼就揪出问题所在啦!你代码里的循环变量用错了,这才导致grade数组没法正确存储对应等级。
核心错误点
你写的for i in range(0, len(percent))里的i是数组的索引值(从0到6),而不是percent数组里的实际分数!所以你的条件i >=70 and i <=100永远不会成立——毕竟i最大才6,grade数组自然加不上任何内容啦。
修正后的代码
我给你两种修正方案,第二种更符合Python的简洁风格:
方案1:通过索引访问分数
percent = [33, 44, 55, 66, 77, 88, 99] grade = [] for i in range(0, len(percent)): score = percent[i] # 取出当前索引对应的实际分数 if 70 <= score <= 100: grade.append("Distinction") # 替换成你需要的对应字符串 elif 60 <= score < 70: grade.append("First Class") elif 50 <= score < 60: grade.append("Second Class") elif 40 <= score < 50: grade.append("Pass") else: grade.append("Fail")
方案2:直接遍历分数(更推荐)
这种方式不用管索引,直接遍历percent里的每个元素,代码更清晰:
percent = [33, 44, 55, 66, 77, 88, 99] grade = [] for score in percent: if 70 <= score <= 100: grade.append("Distinction") elif 60 <= score < 70: grade.append("First Class") elif 50 <= score < 60: grade.append("Second Class") elif 40 <= score < 50: grade.append("Pass") else: grade.append("Fail")
效果验证
运行修正后的代码,grade数组就会变成:["Fail", "Pass", "Second Class", "First Class", "Distinction", "Distinction", "Distinction"]
完全符合分数对应的等级啦!
内容的提问来源于stack exchange,提问作者Pancos
相关产品推荐
相关产品推荐

