如何使用单个for循环处理两个列表?循环内输出差异化语句
用单个for循环处理两个列表的解决方案
嘿,这个问题我熟!既然你的student_name和student_result_reading是一一对应的(每个学生对应一个阅读成绩),咱们可以用Python的zip()函数轻松实现单个for循环同时遍历两个列表,再加上条件判断输出不同语句。
完整代码示例
首先补全你未完成的输入逻辑(确保输入的成绩有效,以及控制是否继续输入),再加上核心的循环处理部分:
student_result_reading = [] student_name = [] # 输入学生信息的循环 while True: student_name_enter = input("Please enter student name: ") student_name.append(student_name_enter) # 确保输入的成绩是0-100之间的整数 while True: try: student_enter = int(input("Please enter student result between 0 - 100%: ")) if 0 <= student_enter <= 100: break else: print("成绩必须在0-100之间哦!") except ValueError: print("请输入有效的整数成绩!") student_result_reading.append(student_enter) continueask = input("是否继续输入?(y/n): ").lower() if continueask != 'y': break # 核心:单个for循环处理两个列表 print("\n===== 学生阅读成绩评估 =====") for name, score in zip(student_name, student_result_reading): if score >= 90: print(f"学生{name}的阅读成绩是{score}%,表现*优秀*!") elif score >= 80: print(f"学生{name}的阅读成绩是{score}%,表现*良好*!") elif score >= 60: print(f"学生{name}的阅读成绩是{score}%,刚好*及格*。") else: print(f"学生{name}的阅读成绩是{score}%,需要*加油努力*啦!")
关键知识点解释
zip()函数的作用:它会把两个(或多个)列表中对应位置的元素打包成元组,比如student_name[0]和student_result_reading[0]会被打包成一个元组,循环时我们可以直接解包成name和score两个变量,一次循环处理一对数据。- 条件判断逻辑:根据成绩区间输出不同的评价语句,用
elif分层判断,逻辑清晰且覆盖所有可能的成绩范围(0-100)。 - 输入有效性校验:加了内层循环和
try-except,避免用户输入非整数或者超出范围的成绩,让程序更健壮。
如果你的两个列表长度不一致,zip()会自动以较短的列表为准停止循环,不过你的输入逻辑已经保证了每个名字对应一个成绩,所以不用担心这个问题~
内容的提问来源于stack exchange,提问作者GoGoAllen
相关产品推荐
相关产品推荐

