为何Python列表无法逐个对应打印?嵌套循环问题解析
问题原因与解决方法
问题原因
你写的嵌套for循环是核心问题:外层循环遍历姓名列表allData的每一项,内层循环遍历日期列表tanggaldata的所有项,这就导致每个姓名都会和所有日期组合打印,完全不符合“一一对应”的需求。
解决方法
有三种简单的修正方式,按需选择:
方式1:用zip()函数配对对应元素
直接通过zip()把两个列表的对应元素绑定,一次遍历就能输出正确的配对:
# 替换原有的嵌套循环 for name, tanggal in zip(allData, tanggaldata): print(f"{name} lahir pada tanggal {tanggal}")
方式2:通过索引遍历取对应元素
利用两个列表长度一致的特点,用索引定位对应位置的姓名和日期:
# 替换原有的嵌套循环 for i in range(len(allData)): print(f"{allData[i]} lahir pada tanggal {tanggaldata[i]}")
方式3:一开始就存储配对数据(更推荐)
不用分开存两个列表,直接把姓名和日期作为元组存入同一个列表,逻辑更清晰,避免后续配对出错:
# 修改输入部分的代码 all_data = [] while True: name = input("input your name (if done input DONE) : ") tanggal = input("input your date (if done input DONE) : ") if name == "DONE" or tanggal == "DONE": break # 把姓名和日期作为元组存入同一个列表 all_data.append( (name, tanggal) ) # 打印部分 for name, tanggal in all_data: print(f"{name} lahir pada tanggal {tanggal}")
内容的提问来源于stack exchange,提问作者Amongus
相关产品推荐
相关产品推荐

