Python使用for in range循环合并科目分数内容报错求助
解决Python循环合并科目与分数的问题
嘿,我来帮你搞定这个循环的小问题!先拆解下你遇到的两个核心问题:
问题出在哪?
- 嵌套循环导致重复打印:你用了两层
for循环,外层遍历科目、内层遍历分数,这会让每个科目和所有分数都配对一遍——比如语文会和85、79、93各组合一次,所以每个科目被打印3次。 - 字符串格式错误:你的
subjects列表里的内容是类似“语文成绩:分”的结构,这就导致分数被放在了“分”的后面,和你想要的“科目:分数分”格式完全反过来了。
正确的代码实现
先调整subjects的格式,只保留科目前缀,然后用单层循环遍历索引,把对应位置的科目、分数和“分”拼接起来:
# 修正科目字符串,只保留前缀部分 subjects = ["语文成绩:", "数学成绩:", "英语成绩:"] scores = ["85", "79", "93"] # 单层循环遍历索引,一一匹配对应位置的科目和分数 for i in range(len(subjects)): # 使用f-string拼接成目标格式 print(f"{subjects[i]}{scores[i]}分", end=" ")
运行这段代码就能得到你想要的结果:
语文成绩:85分 数学成绩:79分 英语成绩:93分
(如果希望每个结果单独占一行,去掉print里的end=" "参数即可)
额外小技巧
如果不想修改原subjects的字符串,也可以用字符串替换的方式调整格式,比如:
subjects = ["语文成绩:分", "数学成绩:分", "英语成绩:分"] scores = ["85", "79", "93"] for i in range(len(subjects)): # 把字符串里的"分"替换成"分数值+分" result = subjects[i].replace("分", f"{scores[i]}分") print(result, end=" ")
不过第一种直接修正前缀的方式更直观易懂哦。
内容的提问来源于stack exchange,提问作者user14719773
相关产品推荐
相关产品推荐

