Python编程实验一:流程控制结构

目录

一、实验目的与要求

二、实验内容

三、主要程序清单和程序运行结果

第1题

第2题

第3题

第4题

四、实验结果分析与体会


一、实验目的与要求

(1)通过本次实验,学生应掌握多分支语句 if …elif…else结构的用法; 
(2)掌握循环语句for、while结构的用法以及跳转语句continue、break的应用;
(3)能应用print()函数和字符串的format方法控制输出内容的格式;
(4)按照实验题目要求独立正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果)

二、实验内容

请使用 Python 语言在 Jupyter Notebook 环境下编程,完成下列题目的要求。

1、请编写一个成绩转换程序。每次输入一个百分制的学生成绩,成绩大于或等于90且小于或等于100的输出为“A”,成绩大于或等于80且小于90的输出为“B”,成绩大于或等于70且小于80的输出为“C”,成绩大于或等于60且小于70的输出为“D”,成绩小于60的输出为“E”。如果输入数据不合法(大于100或者小于0)时输出“data error!”。允许重复输入成绩进行转换,直接输入回车时结束程序‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬。‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

2、编写程序,要求从键盘输入一个10以内的正整数n,计算并输出的结果。当输入的内容不符合要求时,提示用户重新输入,直到符合要求为止。

3、在玩数7游戏中,要求凡是数到7、7的倍数、以及带7的正整数时一律(例如7、14、27都要跳过)不允许说出来,请按这种规则输出100以内允许说出来的那些正整数,要求每行最多输出10个。

4、打印如下图所示星号图形(两个分开实现):

     

三、主要程序清单和程序运行结果

第1题

1、请编写一个成绩转换程序。每次输入一个百分制的学生成绩,成绩大于或等于90且小于或等于100的输出为“A”,成绩大于或等于80且小于90的输出为“B”,成绩大于或等于70且小于80的输出为“C”,成绩大于或等于60且小于70的输出为“D”,成绩小于60的输出为“E”。如果输入数据不合法(大于100或者小于0)时输出“data error!”。允许重复输入成绩进行转换,直接输入回车时结束程序‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬。‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

while True:score = input("请输入成绩:")if score=="":    #输入时直接回车会结束print("程序结束")breakelse:            #输入不是直接回车时,需要把输入的数字字符串转换成数值score=int(score)if 90<=score<=100:print("A")elif 80<=score<90:print("B")elif 70<=score<80:print("C")elif 60<=score<70:print("D")elif 0<=score<60:print("E")else:print("Data Error!")

第2题

2、编写程序,要求从键盘输入一个10以内的正整数n,计算并输出的结果。当输入的内容不符合要求时,提示用户重新输入,直到符合要求为止。

法1:单层循环

while True:n=int(input("请输入一个正整数n(0<n<10):"))if 0<n<10:breakelse:print("输入不符合要求,请重新输入")
sum=0
item=1   #item用于保存各项的阶乘,初始化时1!=1for i in range(1,n+1):item*=i   #当前项的阶乘=前项的阶乘*isum+=item    print("{}!={}".format(i,item))print("前{}个正整数的阶乘之和={}".format(n,sum))

 

法2:两层循环

while True:n=int(input("请输入一个正整数n(0<n<10):"))if 0<n<10:breakelse:print("输入不符合要求,请重新输入")
sum=0
for i in range(1,n+1):         #外层循环求阶乘的和item=1for j in range(1,i+1):     #内层循环求阶乘item*=jsum+=itemprint("{}!={}".format(i,item))print("前{}个正整数的阶乘之和={}".format(n,sum))  

第3题

3、在玩数7游戏中,要求凡是数到7、7的倍数、以及带7的正整数时一律(例如7、14、27都要跳过)不允许说出来,请按这种规则输出100以内允许说出来的那些正整数,要求每行最多输出10个。

法1:使用求余数(%)和求商运算(//)表达判断条件

num=0  #num用于控制每行输出的数字个数,num等于10的倍数就需要换行显示
for i in range (1,101):#下面语句中i%7==0表示能整除7的数,i%10==7表示个位是7的数,i//10==7表示十位是7的数    if i%7==0 or i%10==7 or i//10==7:  continueelse:print(i,end=" ")num+=1if num%10==0:print()
print("满足要求的数字共有{}个".format(num))

 

法2:使用求余数(%)和字符串类型转换以及成员运算(in)表达判断条件

num=0  #num用于控制每行输出的数字个数,num等于10的倍数就需要换行显示
for i in range (1,101):#下面语句中i%7==0表示能整除7的数, "7" in str(i)判断字符"7"是否包含在数值i转换产生的字符串中   if i%7==0 or "7" in str(i):  continueelse:print(i,end=" ")num+=1if num%10==0:print()
print("满足要求的数字共有{}个".format(num))

 

第4题

 4、打印如下图所示星号图形(两个分开实现):

     

法1:巧妙利用居中对齐进行显示 

#显示菱形,使用字符串的format方法进行居中
for i in range(0,4):print("{: ^7}".format("*"*(2*i+1)))
for i in range(0,3):print("{: ^7}".format("*"*(5-2*i)))print()
#显示菱形,使用字符串的center方法进行居中,该方法的原型是:str.center(width[, fillchar])
for i in range(0,4):print(("*"*(2*i+1)).center(7," "))
for i in range(0,3):print(("*"*(5-2*i)).center(7," "))

 

#显示三角形,使用字符串的format方法进行居中
for i in range(1,9):if i==8:    #输出最后一行的多个星号print('*'*(2*i-1))elif i==1:  #居中输出第一行的1个星号print('{:^15}'.format('*'))else:        #居中输出中间行的多个星号print('{:^15}'.format('*'+' '*(2*i-3)+'*'))

 

法2:使用空格字符填充最左侧星号出现的左侧空白区域

#显示菱形
#先输出菱形的上4行:
for i in range(1,5):space_num=4-i   #发现上部的规律:每行左侧的空格数(space_num)=4减去每行的星数(star_num),star_num=2*i-1      #发现上部的规律:每行的星数(star_num)=循环控制变量i的值乘以2再减去1for j in range(1,space_num+1):print(' ',end='')for k in range(1,star_num+1):print('*',end='')print()
#再输出菱形的下3行:
for i in range(1,4):space_num=i  #发现下部的规律:每行左侧的空格数(space_num)=循环控制变量i的值减去1,star_num=7-i-space_num  #发现下部的规律:每行的星数(star_num)+每行左侧的空格数(space_num)+循环控制变量i的值=常数7   for j in range(1,space_num+1):print(' ',end='')for k in range(1,star_num+1):print('*',end='')print()

提示:菱形中每行左侧的空格、每行星号个数与行号的关系如下

上面4行的行号i每行左侧的空格数space_num每行的星号数star_numi与space_num的关系i与star_num的关系
131i+space_num=4star_num=2*i-1
223
315
407
下面3行的行号i每行左侧的空格数space_num每行的星号数star_numi与space_num的关系i与star_num的关系
115space_num=ii+space_num+star_num=7
223
331
for i in range(1,9):    left_space=8-i       #left_space表示每行最左边的星号左侧的空格数left_star=1          #left_star表示每行最左侧的星号个数#mid_num表示每行最左侧星号和最右侧星号之间的字符个数mid_num=(i-1)*2-1 if i>1 else 0   #注意:三目运算中表达式只能作为左值,右值不能出现赋值表达式#right_star表示每行最右侧的星号个数right_star=1 if i>1 else 0#mid_char表示每行最左侧星号和最右侧星号之间的字符种类,除第8行是星号填充外,其他行都是空格填充mid_char=' 'if i!=8 else '*'#每行由左侧空格、最左边星号、中间字符和最右边星号四部分构成line=" "*left_space+"*"*left_star+mid_char*mid_num+"*"*right_star    print(line)

提示:三角形中的每行可看成由左侧空格、最左边星号、中间字符和最右边星号四部分构成

每行的行号i每行最左侧的星号左边的空格数left_space每行最左侧的星号个数left_star每行最左侧星号和最右侧星号之间的字符个数mid_num每行最右侧的星号个数right_star
17100
26111
35131
44151
第i行8-i1(i-1)*2-11
801131

可见:
除了第1行的mid_num和right_star外,上述4个变量都具有统一的规律;
另外,除了第8行的最左侧星号和最右侧星号中间的字符是用星号填充外,其他行的中间字符都是空格;
这些例外情况都可以通过两分支的三目运算符来简洁的表达。

四、实验结果分析与体会

        通过本次流程控制结构实验,掌握了多分支语句 if…elif…else结构的用法,分支条件嵌套语句的使用,并了解了循环语句for、while结构的用法和跳转语句continue、break的应用,能应用print()函数和字符串的format方法控制输出字符图形。For循环用来遍历集合,通过不使用下标的方式来实现对集合中每一个元素的访问,此外,在while循环中,代码块的程序会一直执行,直到循环条件为0或False。但这里需要注意的是,若是循环条件一直为True,则程序无法跳出循环,称为死循环,必要时需要break跳出循环。使用continue语句,我们可以停止循环当前迭代,并继续下一个;使用break语句,即使while条件为真,我们也可以停止循环。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/660100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3/vue2中自定义指令不可输入小数点.

import { directive } from vueconst noDecimal {mounted(el) {el.addEventListener(keypress, (e) > {if (e.key .) {e.preventDefault() }})} }// 使用自定义指令 directive(no-decimal, noDecimal)使用 标签上添加 v-no-decimal <el-input…

重磅!讯飞星火V3.5正式发布,3大核心能力超GPT-4 Turbo!

1月30日&#xff0c;科大讯飞召开星火认知大模型V3.5升级发布会&#xff0c;这是国内首个基于全国产算力训练的多模态认知大模型。科大讯飞董事长刘庆峰先生、研究院院长刘聪先生出席了大会&#xff0c;并对最新产品进行了多维度解读。 讯飞星火V3.5的7大核心能力实现全面大幅…

【Python】P2 Python3 安装使用

目录 新手教程开发教程 本篇博客文章划分为两个主要部分&#xff1a; 【新手教程】旨在为 Python 编程的新手提供指导&#xff0c;适合于初学者入门&#xff0c;但不太适合用于开发大型项目&#xff1b;【开发教程】则面向那些已经有项目开发经验或者希望迅速提升开发技能的读…

BUUCTF-Real-[ThinkPHP]5-Rce

1、ThinkPHP检测工具 https://github.com/anx0ing/thinkphp_scan 漏洞检测 通过漏洞检测&#xff0c;我们发现存在rce漏洞&#xff01; 2、漏洞利用 ---- [!] Name: Thinkphp5 5.0.22/5.1.29 Remote Code Execution VulnerabilityScript: thinkphp5022_5129.pyUrl: http://n…

新春营销不间断,AI 整活更省心

新年、春节历来都是营销的大热节点&#xff0c;各种好物集、年货节、送礼清单比比皆是。这些新鲜玩法的背后是大量的品牌内容「弹药库」。 然而&#xff0c;品牌想在竞争激烈的新春季刷满存在感&#xff0c;并非易事。一方面&#xff0c;节日期间&#xff0c;消费者对于内容的审…

Tensorflow2.0笔记 - where,scatter_nd, meshgrid相关操作

本笔记记录tf.where进行元素位置查找&#xff0c;scatter_nd用于指派元素到tensor的特定位置&#xff0c;meshgrid用作绘图的相关操作。 import tensorflow as tf import numpy as np import matplotlib.pyplot as plttf.__version__#where操作查找元素位置 #输入的tensor是Tr…

【蓝桥杯冲冲冲】动态规划学习 [NOIP2003 提高组] 加分二叉树

【蓝桥杯冲冲冲】动态规划学习 [NOIP2003 提高组] 加分二叉树 蓝桥杯备赛 | 洛谷做题打卡day24 文章目录 蓝桥杯备赛 | 洛谷做题打卡day24[NOIP2003 提高组] 加分二叉树题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示数据规模与约定思路 题解代码我的一些话 [NOI…

Python数据可视化库之holoviews使用详解

概要 数据可视化在各个领域中都起着至关重要的作用&#xff0c;无论是用于数据分析、科学研究、教育还是决策支持。Python作为一门强大的数据科学工具&#xff0c;拥有众多的可视化库。其中&#xff0c;HoloViews是一个备受欢迎的库&#xff0c;它可以轻松创建交互性可视化&am…

PE文件结构 安全分析与恶意软件研究 逆向工程 优化与性能调整 兼容性与移植性分析

了解PE&#xff08;Portable Executable&#xff0c;可移植可执行文件&#xff09;文件结构有多个用途 对于软件开发、安全分析、逆向工程等领域的专业人士来说尤其重要。PE文件格式是Windows操作系统中用于可执行文件、动态链接库&#xff08;DLLs&#xff09;、以及其他文件…

安全防御第五次作业

拓扑图及要求如下&#xff1a; 实验注意点&#xff1a; 先配置双机热备&#xff0c;再来配置安全策略和NAT两台双机热备的防火墙的接口号必须一致双机热备时&#xff0c;请确保vrrp配置的虚拟IP与下面的ip在同一网段如果其中一台防火墙有过配置&#xff0c;最好清空或重启&…

C语言指针学习(1)

前言 指针是C语言中一个重要概念&#xff0c;也是C语言的一个重要特色&#xff0c;正确而灵活地运用指针可以使程序简洁、紧凑、高效。每一个学习和使用C语言的人都应当深入的学习和掌握指针&#xff0c;也可以说不掌握指针就没有掌握C语言的精华。 一、什么是指针 想弄清楚什…

【Leetcode 514】自由之路 —— 动态规划

514. 自由之路 电子游戏“辐射4”中&#xff0c;任务 “通向自由” 要求玩家到达名为 “Freedom Trail Ring” 的金属表盘&#xff0c;并使用表盘拼写特定关键词才能开门。 给定一个字符串ring&#xff0c;表示刻在外环上的编码&#xff1b;给定另一个字符串key&#xff0c;表…

2024Node.js零基础教程(小白友好型),nodejs新手到高手,(三)NodeJS入门——http协议

033_HTTP协议_初识HTTP协议 hello&#xff0c;大家好&#xff0c;这个小节我们来认识一下 http协议。 http是几个单词的首字母拼写&#xff0c;全称为Hypertext Transfer Protocol 译为超文本传输协议&#xff0c;那么这个http协议是互联网上应用最广泛的协议之一。顺便说一下…

rancher证书过期问题处理

问题 起初&#xff0c;打开rancher ui页面打不开&#xff0c;telnet rancher的服务端口也不通。查看rancher 控制节点&#xff0c;日志显示&#xff0c;X509&#xff1a;certificate has expired or is not ye valid。证书已过期 解决 现在网上大部分的解决方案都是针对的2…

TSINGSEE青犀智能分析网关V4如何利用AI智能算法保障安全生产、监管,掀开安全管理新篇章

旭帆科技的智能分析网关V4内含近40种智能分析算法&#xff0c;包括人体、车辆、消防、环境卫生、异常检测等等&#xff0c;在消防安全、生产安全、行为检测等场景应用十分广泛。如常见的智慧工地、智慧校园、智慧景区、智慧城管等等&#xff0c;还支持抓拍、记录、告警、语音对…

【TI毫米波雷达】CLI模块初始化,demo工程覆写CLI控制指令代码的操作方式(以IWR6843AOP为例)

【TI毫米波雷达】CLI模块初始化&#xff0c;demo工程覆写CLI控制指令代码的操作方式&#xff08;以IWR6843AOP为例&#xff09; 本文主要针对demo工程 通过覆写CLI配置 跳过CLI配置命令 以此来达到自动配置参数 并控制雷达的功能 在此期间不开启CLI和相关初始化 只是针对CLI控…

华为配置ARP安全综合功能实验

配置ARP安全综合功能示例 组网图形 图1 配置ARP安全功能组网图 ARP安全简介配置注意事项组网需求配置思路操作步骤配置文件 ARP安全简介 ARP&#xff08;Address Resolution Protocol&#xff09;安全是针对ARP攻击的一种安全特性&#xff0c;它通过一系列对ARP表项学习和A…

在深度学习中,epoch和learning rate的通常取值范围?

在深度学习中&#xff0c;epoch和学习率的取值确实会根据不同的任务、数据集和模型架构有所不同。然而&#xff0c;您提到的范围是一些常见的经验性取值&#xff0c;这些取值在很多情况下都能工作得相当好。 1. 对于epoch的取值范围&#xff1a; 在很多研究论文和实际应用中&…

单片机学习笔记--- 定时器/计数器(简述版!)

目录 定时器的介绍 定时计数器的定时原理 定时计数器的内部结构 两种控制寄存器 &#xff08;1&#xff09;工作方式寄存器TMOD &#xff08;2&#xff09;控制寄存器TCON 定时计数器的工作方式 方式0 方式1 方式2 方式3 定时器的配置步骤 第一步&#xff0c;对…

建立自己的交易法则,打造自己的交易系统

一、教程描述 本套教程由知名财经自媒体倾心打造&#xff0c;基金经理资深会计师游资操盘手团队&#xff0c;手把手教你打造自己的交易系统&#xff0c;1、海龟交易法则CANSLIM模型合二为一&#xff0c;建立自己的交易法则&#xff1b;2、严格执行交易系统&#xff0c;保护本金…