这里编程总初学者,需要你的指导。在
我正在从一些免费的在线课程中学习python,然后遇到了这个我已经解决了的特殊练习,但是让我困惑的是,有两种不同的方法会产生不同的结果。就这样。。在
问题是: 使用文本文件学生数据.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
然后我将它与网站提供的答案进行了比较(我以我的风格重写了它):
^{pr2}$这更简单,但产生的结果略有不同(但至关重要):
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
注意sue的结果是不同的。“自动”版本不能产生正确的结果。这是怎么回事?在
谢谢。在
第二个版本的问题是在比较之前它没有将分数转换成
int
。比较字符串时,'32'
在'9'
之前。在在使用
min
和max
之前,可以通过将分数转换为int
来解决此问题:网站上提供的答案计算},并考虑{}。其他答案都吻合,这只是巧合。在
min
和{这可能是因为在查找“minimum”和“maximum”时,这些数字没有转换为整数类型,而是作为字符串类型。您应该首先使用
map
函数或其他根据您的方便进行转换。在我做了这件事而且成功了-
相关问题 更多 >
编程相关推荐