【发布时间】:2013-11-03 11:46:43
【问题描述】:
markList=[]
Lmark=0
Hmark=0
while True:
mark=float(input("Enter your marks here(Click -1 to exit)"))
if mark == -1: break
markList.append(mark)
markList.sort()
mid = len(markList)//2
if len(markList)%2==0:
median=(markList[mid]+ markList[mid-1])/2
print("Median:", median)
else:
print("Median:" , markList[mid])
Lmark==(min(mark))
print("The lowest mark is", Lmark)
Hmark==(max(mark))
print("The highest mark is", Hmark)
我的程序是一个使用列表的基本成绩计算器。我的程序要求用户将他们的成绩输入到一个列表中,然后在列表中计算你的平均分并找到你的最低和最高分。我找到了平均值,但我似乎无法弄清楚如何找到最低和最高等级。你能告诉我公关告诉我该怎么做吗?
【问题讨论】:
-
这是一个非常糟糕的问题标题。此外,您似乎几乎在那里。
lowest_mark = min(markList)会起作用,您在最后一个附加值上调用min()。 -
在
Lmark==(min(mark))和Hmark==(max(mark))中,==不是赋值而是比较。尝试改用=。 -
我认为每次在列表中执行
min和max以获得@millimoose 建议的相应值是不必要的。在您的算法中,您在分配最小值和最大值之前已经对列表进行了排序,因此您只需获取排序列表的第一个和最后一个元素。 -
它说'float'对象不可迭代的原因是你调用
min(mark)而不是@millimoose建议的min(markList)。更改它以查找整个列表的最小值,同样更改max()语句以查找整个列表的最大值。mark是单个标记,min()不知道如何处理单个float值,因此您会遇到异常。 -
是的,一旦您对列表进行了排序,
markList[0] == min(markList)将为真,markList[-1] == max(markList)将为真。顺便说一句,按照你写这个的方式,它会为输入的每个标记重新计算所有内容。这对于调试来说很好,但是一旦你让它工作,我想你会想要在输入循环下面取消缩进代码。
标签: python-3.x