猿问

在不使用 .pop 的情况下替换列表中的项目?

这是问题:

一位教授觉得考试成绩有点低。教授决定给70分以下的学生加8%的学分,给70分以上的学生加5%的学分。编写一个 Python 程序:

  • 将分数存储在列表中,并打印初始分数,并显示一条消息:

  • 分数 = [73.75, 39.45, 72.60, 45.50, 82.75, 97, 54.50, 48.00, 96.50 ]

  • 使用循环,处理每个分数以计算新分数并将其存储在同一个列表中。您不能更改列表的顺序,因为分数对应于班级名册。

  • 添加额外学分后,将每个新分数截断为不超过 100。

  • 打印新乐谱列表,并附上一条短消息

  • 您不能在您的程序中使用多个列表。

  • 您的程序必须处理任意长度的列表。上面的列表仅用于您的程序测试。

我的代码:


#this code shows old scores and prints the new scores of students 


position = 0 #initialize position for later 


scores = [73.75, 39.45, 72.60, 45.50, 82.75, 97, 54.50, 48.00, 96.50 ]

print ("\nThese are the old scores: ", scores)


for score in scores:

    if score < 70:

        score *= 1.08

    elif score >= 70:

        score *= 1.05

    scores.insert (position,float(format(score,".2f"))) #this adds the new score into position

    position += 1

    scores.pop (position) #this removes the old score which was pushed to +1 position


for position, score in enumerate(scores):

    if score > 100:

        scores[position] = 100


print ("These are the new scores:", scores)

他希望我不要使用 .pop 或 enumerate 之类的东西,并说有一种更简单的方法可以做到,但我想不出一个方法。请帮忙!


慕运维8079593
浏览 160回答 2
2回答

GCT1015

使用range(len)到位历数scores = [73.75, 39.45, 72.60, 45.50, 82.75, 97, 54.50, 48.00, 96.50 ]print(scores)for i in range(len(scores)):&nbsp; &nbsp; if scores[i] < 70:&nbsp; &nbsp; &nbsp; &nbsp; scores[i] = round(scores[i]*1.08, 2)&nbsp; &nbsp; &nbsp; &nbsp; if scores[i] > 100:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scores[i] = 100&nbsp; &nbsp; elif scores[i] > 70:&nbsp; &nbsp; &nbsp; &nbsp; scores[i] = round(scores[i]*1.05, 2)&nbsp; &nbsp; &nbsp; &nbsp; if scores[i] > 100:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scores[i] = 100print(scores)# [77.44, 42.61, 76.23, 49.14, 86.89, 100, 58.86, 51.84, 100]

白猪掌柜的

看看你的第二个循环:你就是这样做的。只需直接用新值替换旧值即可。for i in range(len(scores)):&nbsp; &nbsp; if scores[i] < 70:&nbsp; &nbsp; &nbsp; &nbsp; scores[i] *= 1.08&nbsp; &nbsp; elif scores[i] >= 70:&nbsp; &nbsp; &nbsp; &nbsp; scores[i] *= 1.05没有了insert和pop。
随时随地看视频慕课网APP

相关分类

Python
我要回答