Python程序设计实例 | 控制结构

举报
TiAmoZhang 发表于 2023/09/05 14:00:41 2023/09/05
【摘要】 * 建议Python采用3.10及以上版本,NumPy采用1.22.3及以上版本,Matplotlib采用3.5.1及以上版本,Pandas采用1.4.2及以上版本。Python从3.10这个版本开始,标准发行版本中自带的IDLE交互式环境中输入提示符>>>单独放在左侧,不能随输入语句一起复制。为了清晰区分实例在交互环境中的输入和输出,本系列推文在每个输入语句的开头依然保留输入提示符>>>。

640.jpg

01、控制结构的应用实例

实例描述:输入若干同学的计算机成绩,成绩分布在[0,120]区间内。求出这些同学的计算机成绩平均值、最小值和最大值。输入出现负数时终止输入,且该负数不计入统计范围。

分析: 因为平均值是所有成绩之和再除以人数,所以设置总分变量iSum初始值为0,计数总人数的变量sCnt为0。因为需要求成绩的最大值和最小值,所以设置成绩最大值变量sMax在循环开始前是一个非常小的数,譬如是-100; 设置成绩最小值变量sMin在循环开始前是一个非常大的数,譬如是150。

在程序运行时依次输入若干同学的计算机成绩,存入变量aScore,以输入负数结束输入。每输入一名同学的成绩就进行以下操作。

(1) 将该学生的计算机成绩累加到变量iSum中。

(2) 对人数计数变量sCnt增加1。

(3) 判断该学生的成绩与成绩最大值的关系,如果该生成绩大于成绩最大值,则将成绩最大值修改为该生的成绩值,否则不做任何操作。

(4) 判断该学生的成绩与成绩最小值的关系,如果该生成绩小于成绩最小值,则将成绩最小值修改为该生的成绩值,否则不做任何操作。

(5) 输入下一名学生的成绩,继续做上述步骤(1)~步骤(4)的操作,直到输入负数结束。

通过上述分析可见,需要利用循环控制结构实现上述步骤(1)~步骤(5)操作,循环结束的条件是输入的成绩值为负数。而对变量iSum、sCnt、sMax和sMin的赋初值要放到循环体以外。步骤(3)和步骤(4)需要用分支控制结构实现。而步骤(5)的输入下一名学生的成绩,是推动程序进入下一轮循环的关键。

程序源代码如下:

#example3_18.py
# coding =gbk
iSum =0
sCnt =0
sMax= -100
sMin=150
aScore = int(input(请输入一名同学的成绩:))
while aScore>=0:
iSum =iSum +aScore
sCnt = sCnt +1
if aScore> sMax:
sMax =aScore
if aScore < sMin:
sMin =aScore
aScore = int(input请输入下一名同学的成绩:))print(计算机平均成绩:’iSum/sCnt)print(计算机成绩最高分:’sMax)print( 计算机成绩最低分:’,sMin)
aScore = int(input请输入下一名同学的成绩:))print(计算机平均成绩:’iSum/sCnt)print(计算机成绩最高分:’sMax)print( 计算机成绩最低分:’,sMin)

程序example3_18.py的一次运行结果:

请输入一名同学的成绩:65
请输入下一名同学的成绩:70
请输入下一名同学的成绩:56
请输入下一名同学的成绩:89
请输入下一名同学的成绩:100
请输人下一名同学的成绩:95
请输人下一名同学的成绩:78
请输入下一名同学的成绩:88
请输入下一名同学的成绩:94
请输入下一名同学的成绩:103
请输入下一名同学的成绩:7
请输入下一名同学的成绩:- 1
计算机平均成绩:76.81818181818181
计算机成绩最高分:103
计算机成绩最低分:7

思考: 如果正确成绩位于[0,100]这个区间,也就是最高分只能是100分,那么我们就输入了一个错误的分数103。那么如何修改程序,可以使我们在输错成绩时有提示出现,并可以继续输入其他成绩呢?

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。