《python语言程序设计》第5章 第10题利用python 循环找出学生分数里的最高分和次高分

已经到放弃的边缘。但是2021-8-23 中午我误打误撞的找到了解决下面这个题的方法

该题还是那本没有答案的教材里的内容
5.11 编写程序输入学生个数以及每个学生的分数,然后显示最高分和次高分。
根据题面。我今天先忽律学生个数的解答。我进入最高分和次高分。

根据5.10题的方式求取最高分的python代码如下:
data = eval(input("Enter data input: "))
number = data
while data != 0:
    data = eval(input("Enter data input: "))
    if data > number:
        number = data
//这个公式直接求出了学生中最大的分数。
最初的解题思路
我根据教材中的continue构思是遇到最大数然后跳过,接着继续循环直到找到次高分。
最初的解题思路结果
根据我的设想我将continue加入到了代码中。代码如下:
data = eval(input("Enter data input: "))
number = data
while data != 0:
    data = eval(input("Enter data input: "))
    if data > number:
        number = data
        continue   //跳过最高数。但没有认定次高分的标准
再此解题
根据第一种解题方式的思路我开进了一个死胡同。是可以跳过最高分。但最高分放到哪里?次高分的标准以及如何表达呢?

我又定义了一个变量叫number2 我寄希望将次高分放到这个变量里。然后和最高分一起分别打印输出。
number2 = 0 //我的认为这个变量应该是0.也认为应该是data 两种方式都试了。最后我定义为0。结果还是失败。

小插曲

再次尝试的失败。我有点闹心。玩游戏走神都不能解决问题。这个时候我改变了一下我的程序

data = eval(input("Enter data input: "))
number = data
while data != 0:
    data = eval(input("Enter data input: "))
    if data > number:
        number2 = data
    

奇迹发生的时候

计算机打印出次高分。我很惊讶也很兴奋,成功了!可是很快打脸的事情发生了。 我用名为score.txt的文本文件来输入学生分数的。结果次高分正好是这个文本里的倒数第2行。下一行就是0。
所以程序显示次高分并不是识别出了次高分。而是因为次高分正好放在了倒数第2行的位置上。

沉闷、沉默、闹心

这是程序员们的内心世界吧。不论你编的WIN10还是我这样的菜鸟。只要你在变成的世界里都会遇到这样的情况。这就是真正的Hello World!

我准备放弃。然后像以前一样重第一章重新开始做到第五章

成功

今天中午自己还是很懒散的。最后终于把持不住回来做这道题。
本来自己也没有什么构想只是把number1和number2这些变量直接互相赋值。但是奇迹发生了。代码见下表:

data = eval(input("Enter data input: "))
number = data

number1 = 0
number2 = 0
number3 = data

while data != 0:
    claNumber += 1
    data = eval(input("Enter data input: "))
    if data > number:
        number = data
    elif data > number1:
        number2 = data
    elif data > number2:
        number3 = data
    # elif number > number2:
print(f" First number is {number}")
print(f" Second number is {number2}")
print(f" Third number is {number3}")

结果在这里插入图片描述

成功了!不过这个third的数值不对。这个数并不第3高的分。而是score.txt的第一行这个是为什么呢?也许以后能慢慢明白吧!好今天就分享到这里。希望有人给我点赞!

2022-12-1更新这个文章的时候想到了。答案好像不正确。在下次重新做的时候,再考虑。今天截至。第2章刚做完第7遍。还差最后2到题。真的很慢。11月1日到现在。事情太分散了。

我争取早日重新刷到这道题。再给大家解答。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电饭叔

谢谢各位兄弟们的关注,谢谢破费

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值