You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用单个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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:56:41