python - Jython 范围问题
问题描述
我正在编写这个程序来获取输入类的列表以及分数。目标是打印班级输入以及与数字分数输入相关的字母等级。
但是,当放入超过 1 个类时,它会给我一个错误,说序列索引超出范围。此外,无论我输入什么分数,它总是在班级旁边打印“A”。
course_list = []
score_list = []
grade_list = []
while True:
course = requestString("Enter a class name or 'q' to quit")
if course == 'q':
break
else:
course_list.append(course)
score = requestString("Enter the class score")
score_list.append(score)
if score >= 90:
grade_list.append(" A")
elif score >= 80:
grade_list.append(" B")
elif score >= 70:
grade_list.append(" C")
elif score >= 60:
grade_list.append(" D")
else:
grade_list.append(" F")
print "-=Class Scores=-"
final_list = [course_list, grade_list]
for i in range(len(course_list)):
final = ''
for j in range(len(final_list)):
final += (final_list[j][i])
print final
解决方案
这与 Jython 无关。您所要做的就是将整个if score [...]
-Block 缩进到与score_list.append(score)
.
你的代码的问题是这个块在while
-loop 之外,所以你扩展course_list
和score_list
直到输入是q
,但只有在完成之后你才能获取最后一个分数并扩展grade_list
一次。
所以grade_list
总是有 1 的长度(或者 0,如果没有给出课程)并且索引final_list[j][i]
失败,因为它期望 的长度course_list
等于 的长度grade_list
。
course_list = []
score_list = []
grade_list = []
while True:
course = requestString("Enter a class name or 'q' to quit")
if course == 'q':
break
else:
course_list.append(course)
score = requestString("Enter the class score")
score_list.append(score)
# this has to happen inside the while-loop:
if score >= 90:
grade_list.append(" A")
elif score >= 80:
grade_list.append(" B")
elif score >= 70:
grade_list.append(" C")
elif score >= 60:
grade_list.append(" D")
else:
grade_list.append(" F")
print "-=Class Scores=-"
final_list = [course_list, grade_list]
for i in range(len(course_list)):
final = ''
for j in range(len(final_list)):
final += (final_list[j][i])
print final
推荐阅读
- performance - 了解分支预测效率
- android - 更改片段时 UI 中断
- c# - 调用返回值的数据库存储函数或存储过程
- javascript - Material UI 组件不返回 HTMLElement 引用
- java - 我如何使用 onUpgrade 方法?
- laravel - Laravel Storage SFTP 和上传文件权限
- c++ - 如何将对象添加到 Json 文件
- vhdl - 使用全加器纹波的 N 位加法器/减法器 - 进位问题
- javascript - 在没有jquery的情况下将g标签添加到svg标签中
- javascript - 当数据多于 a4 大小时打印空白数据