首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python练习:计算每个学生的最低和最高分数。

Python练习:计算每个学生的最低和最高分数。
EN

Stack Overflow用户
提问于 2016-12-28 11:14:55
回答 5查看 1.7K关注 0票数 3

完全初学者在这里编程,需要您的指导。

我正在通过一些免费的在线课程学习python,然后遇到这个特定的练习,我已经解决了这个问题,但让我困惑的是,有两种不同的方式产生了不同的结果。所以就这样..。

问题:使用文本文件studentdata.txt (如下所示)编写一个程序,计算每个学生的最低和最高分数。把他们的名字也打印出来。

studentdata.txt: 乔10 15 20 30 40 条例草案23 16 19 22 起诉8 22 17 14 32 17 24 21 2 9 11 17 格蕾丝12 28 21 45 26 10 约翰14 32 25 16 89

我最后一次尝试:

代码语言:javascript
复制
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()

结果:

乔·民: 10 : 40 比尔:最低: 16 : 23 苏民:2: 32 格蕾丝·米恩: 10 : 45 约翰·民: 14分上限: 89分

然后,我把它与网站提供的答案进行比较(我用我的风格重写了它):

代码语言:javascript
复制
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()

这更简单,但它产生的结果略有不同(但至关重要):

乔·民: 10 : 40 比尔:最低: 16 : 23 苏民: 11,最大值:9 格蕾丝·米恩: 10 : 45 约翰·民: 14分上限: 89分

注意,sue的结果是不同的。“自动”版本不能产生正确的结果。这是怎么回事?

谢谢。

EN

回答 5

Stack Overflow用户

发布于 2016-12-28 11:19:35

第二个版本的问题是,在比较之前,它不会将分数转换为int。当比较字符串时,'32'出现在'9'之前。

您可以通过在使用intmin之前将分数转换为max来解决这个问题。

代码语言:javascript
复制
with open("studentdata.txt", "r") as xFile:
    for xLine in xFile:
        xList = xLine.split()
        scores = [int(x) for x in xList[1:]]
        print(xList[0],"\tmin: ",min(scores),"\tmax: ",max(scores))
票数 3
EN

Stack Overflow用户

发布于 2016-12-28 11:20:58

在站点上提供的答案计算minmax,并考虑到lexicographical order。其余的答案都符合,这只是个巧合。

票数 1
EN

Stack Overflow用户

发布于 2016-12-28 11:33:09

这可能是因为在查找“最小”和“最大值”时,数字没有转换为整数类型,而是被视为字符串类型。您应该首先根据您的方便使用map函数或其他方法来转换它。

我做了这个,它起了作用-

代码语言:javascript
复制
print(xList[0],"\tmin: ",min(list(map(int, xList[1:]))),"\tmax: ",max(list(map(int, xList[1:]))))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41360911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档