初学者到这里编程,需要你的指导。Python练习:计算每个学生的最低和最高分数。
我从一些免费的在线课程学习python,然后遇到这个特定的练习,我已经解决了,但令我困惑的是,有两种不同的方式产生不同的结果。所以在这里不用..
问题: 使用文本文件studentdata.txt(如下图所示)编写计算每个学生的最低和最高分数的程序。打印出他们的名字。
studentdata.txt:
joe 10 15 20 30 40
bill 23 16 19 22
sue 8 22 17 14 32 17 24 21 2 9 11 17
grace 12 28 21 45 26 10
john 14 32 25 16 89
我的最后一次尝试:
xFile = open("studentdata.txt", "r")
for xLine in xFile:
xList = xLine.split()
min = 100
max = 0
for x in xList[1:]:
if int(x) > max:
max = int(x)
for x in xList[1:]:
if int(x) < min:
min = int(x)
print(xList[0],"\tmin: ",min,"\tmax: ",max)
xFile.close()
结果:
joe min: 10 max: 40
bill min: 16 max: 23
sue min: 2 max: 32
grace min: 10 max: 45
john min: 14 max: 89
然后我将它比作由网站提供的给定答案(我把它改写在我的风格):
xFile = open("studentdata.txt", "r")
for xLine in xFile:
xList = xLine.split()
print(xList[0],"\tmin: ",min(xList[1:]),"\tmax: ",max(xList[1:]))
xFile.close()
哪个更简单,bu t将其产生略微不同的(但重要)结果:
joe min: 10 max: 40
bill min: 16 max: 23
sue min: 11 max: 9
grace min: 10 max: 45
john min: 14 max: 89
注意,为结果告是不同的。 '自动'版本不会产生正确的结果。这是怎么发生的?
谢谢。
的自动版本(因为你创造它)并比较它们作为字符串,价值观,并为字符串9比11“大” - 纳米秒之前@ niemmi回答了;-) – Dilettant
这很清楚。谢谢!然而,我试图修改最后的命令:print(xList [0],“\ tmin:”,min(int(xList [1:])),“\ tmax:”,max(int(xList [1:])) )),收到此错误:TypeError:int()参数必须是字符串或数字,而不是'list'..显然最大/最小值不支持'list'模式。所以第一个(手动)答案是正确的。我怎样才能简化这个?谢谢 – NunNo
啊不,你不能把一个字符串列表作为int的参数赋予int,int列表是你在列表中读取时必须做的;-)你可以使用min和最大INTS的名单上 - 样本分钟([INT(X)为X中的Xlist [1:]) – Dilettant