文章目录

  • 分支语句
  • 循环语句
  • for循环
  • 控制结构语句
  • 其他
  • 练习题

分支语句

  • 语法:
if  布尔表达式1:     # if语句基本结构,描述了程序在布尔表达式结构为True的情况下程序需要执行的动作语句1......
elif  布尔表达式2:   #可选的,指定程序在若干不同的条件下需要执行的动作语句1           # 如果布尔表达式1结构为False,则判断表达式2的结果是否为True,以此类推......
......
else:               # 可选的,前面的所有布尔表达式都为False,则执行else中的动作语句1......

例1:输入1个字符,判断这个字符的类型(数字、大写字母、小写字母、符号)。提示:使用ord(obj)函数获取字符的ASCII值,根据ASCII值符判断其类型

str = input('请输入1个字符:')
# 检查输入,如果输入的不是1个字符则结束程序,是则计算出这个字符的ASCII值
if len(str) == 1:asc = ord(str)   # 获取字符的ASCII值if 48 <= asc <= 57 :result = '数字'elif 65 <= asc <= 90:result = '大写字母'elif 97 <= asc <= 122:result = '小写字母'else:result = '符号'print(f'{str}为:{result}')
else:print('输入错误')

例2:使用一个字典保存学生信息(学号作为键,值是一个列表,列表中包含学生的姓名、性别、手机号)。接收外部输入的学生的信息(学号),如果学生存在,则打印出学生的信息;如果不存在,继续输入学生的姓名、性别、手机号,将该学生添加到字典中,打印出学生信息

students = {'1001':['杨雨','女','17712345678'],'1002':['杨宇','男','17312345678'],'1003':['张宇','女','13512345678'],'1004':['赵宇','男','18612345678'],}
stno = input('学号:')
# 通过成员运算符判断键是否存在
if stno in students:student_info = students[stno]print(f'学号:{stno}\t姓名:{student_info[0]}\t性别:{student_info[1]}\t手机号:{student_info[-1]}')
else:print(f'{stno}不存在,请继续录入学生信息')name = input('姓名:')gender = input('性别:')phno = input('手机号:')students[stno] = [name,gender,phno]   # 将新录入的学生信息保存在字典中print(f'学号:{stno}\t姓名:{name}\t性别:{gender}\t手机号:{phno}')# 方法2:通过get方法的返回值判断键是否存在
# student_info = students.get(stno)   # 获取指定键的值,赋值给变量,None/['张宇','女','13512345678']
# if bool(student_info) == True:
#     print(f'学号:{stno}\t姓名:{student_info[0]}\t性别:{student_info[1]}\t手机号:{student_info[-1]}')
# else:
#     print(f'{stno}不存在,请继续录入学生信息')
#     name = input('姓名:')
#     gender = input('性别:')
#     phno = input('手机号:')
#     students[stno] = [name,gender,phno]   # 将新录入的学生信息保存在字典中
#     print(f'学号:{stno}\t姓名:{name}\t性别:{gender}\t手机号:{phno}')

例3:声明一个字典保存用户信息(账号作为键,值是一个列表,列表中包含用户姓名,密码,账户余额)。接收外部输入的账号和密码,完成登录操作。如果账号错误,提示账号错误,请重新输入。账号正确则输入密码,如果密码错误,提示密码错误,请重新输入;密码正确则登录成功,打印出账户余额信息尊敬的 张**林 先生/女士,您的账户余额为 xxx.xx 元,程序结束(姓名的第二个字替换为,账户余额保留2位小数)

accounts = {'1001':['杨雨','123456',1000],'1002':['杨宇','111111',2000],'1003':['张宇','123123',3000.98],'1004':['赵宇','123123',5001.24],}
# 输入账号
account = input('账号:')
# 检查账号是否存在
if account in accounts:passwd = input('密码:')# 检查密码是否正确if passwd == accounts[account][1]:name = accounts[account][0]   # 姓名balance = accounts[account][-1]  # 余额print(f'尊敬的 {name.replace(name[1],"*",1)} 先生/女士,您的账户余额为 {balance:.2f} 元')else:print('密码错误,请重新输入')
else:print('账号不存在,请重新输入')

循环语句

  • while循环

  • 语法:

while 布尔表达式:    # 在布尔表达式结果为True的情况下循环一直执行,直到其结果为False语句1语句2......

例1:输出1-10这10个数字

n = 0   # 循环控制变量
while n < 10:   # 循环继续的条件n += 1   # 步长print(n)    # 循环体

例2:输出1+2+…+99+100的和

n = 0   # 循环控制变量
s = ''
ss = 0  # 保存和
while n < 100:   # 循环继续的条件n += 1   # 步长ss += n  # 每循环一次将n的值累加到ss上s = f'{s}+{str(n)}'print(f'第{n:2}次循环:和为-{ss},表达式-s = {s[1:]}')    # 循环体

例3:输入1个10-20之间的整数n,计算出1+2+…+n的和。如果n不在[10,20]范围内提示错误

n = 0   # 循环控制变量
s = 0  # 保存和
m = input('请输入10-20之间的整数:')
if m.isdecimal():   # 检查输入的内容是否为纯数字m = int(m)if 10 <= m <= 20:  # 检查输入数字的范围是否在10-20之间while n < m:   # 求和n += 1s += nprint(f'1-{m}的和为:{s}')else:print('请输入10-20之间的数字')
else:print('请输入数字')方法2:
n = 0   # 循环控制变量
s = 0  # 保存和
m = input('请输入10-20之间的整数:')
if m.isdecimal() and 10 <= (m:=int(m)) <= 20:   # 检查输入的内容是否为纯数字while n < m:   # 求和n += 1s += nprint(f'1-{m}的和为:{s}')
else:print('请输入10-20之间的数字')
  • 针对循环次数未知的情况,可以通过循环控制变量值的变化来控制循环继续还是结束,比如声明一个变量a=1,循环的条件可以写成a==1,在循环需要结束的地方给变量重新赋值(1以外的任何值)即可

例4:声明一个字典保存用户信息(账号作为键,值是一个列表,列表中包含用户姓名,密码,账户余额)。接收外部输入的账号和密码,完成登录操作。如果账号错误,提示账号错误,请重新输入。账号正确则提示账号正确

accounts = {'1001':['杨雨','123456',1000],'1002':['杨宇','111111',2000],'1003':['张宇','123123',3000.98],'1004':['赵宇','123123',5001.24],}
flag = True  # 循环控制变量
while flag:acc = input('账号:')if acc in accounts:print('账号正确')flag = False  # 为变量重新赋值为False,循环结束else:print('账号错误,请重新输入')

for循环

  • 语法:
for i in iterable:语句1语句2......for i in range(a,b):语句1语句2......
  • i,变量,在循环内部可以直接使用该变量
  • iterable,可迭代对象,将其内部每一个元素分别赋值给变量i,直到元素取完为止
  • range(a,b),生成一个[a,b)范围内的数字序列

例1:输出1-10这10个数字

for i in range(1,11):print(i)

例2:将字符串qwe$%123&*中特殊符号去除

s = 'qwe$%123&*'
for i in s:if i.isalnum() == False:s = s.replace(i,'')
print(s)

例3:输出九九乘法表

for i in range(1,10):    # 控制行for j in range(1,i+1):  # 控制列print(f'{j}*{i} = {i*j:2}',end='\t')print('')

控制结构语句

统计字符:从键盘输入一个字符串,统计这个字符串当中包含几个大写字母,几个小写字母,几个数字

s = input('请输入一个字符串:')
u,l,n = 0,0,0  # 分别保存大写字母、小写字母、数字的数量
for i in s:   # 遍历字符串s中的每一个字符,判断其类型if i.isdecimal():  # 检查是否为数字n += 1elif i.isupper(): # 检查是否为大写字母u += 1elif i.islower(): # 检查是否为小写字母l += 1
print(f'大写字母:{u}\t小写字母:{l}\t数字:{n}')

其他

  • continue,结束当前这一次循环,开始下一次新的循环
  • break,终止循环
  • else,如果循环没有遇到break语句而终止,则会执行else中的语句
while 布尔表达式:......
else:......for i in iterable:...
else:...
s = 'abcdemfg'
for i in s:if i == 'm':print('m包含在字符串s中')break
else:print('m不包含在字符串s中')

练习题

鸡兔同笼不知数,有头32,脚86,问鸡兔各几何?

# 方法1:双层for循环
for j in range(1,32):   # 控制鸡的数量for t in range(1,32):   # 控制兔的数量if t+j == 32 and j*2+t*4 == 86:print(f'鸡:{j}\t兔:{t}')break# 方法2:单层for循环
for j in range(1,32):  # 控制鸡的数量t = 32-j   # 兔的数量if j*2+t*4 == 86:print(f'鸡:{j}\t兔:{t}')break# 方法3:二元一次方程
head,foot = 32,86
t = foot/2-head   # 兔的数量
j = 32-t          # 鸡的数量
print(f'鸡:{j}\t兔:{t}')

有红、白、黑三种颜色的球,其中红球与白球共有28个,黑球与红球共有30个,白球与黑球共有36个,计算三种颜色的球分别有多少个?
输入的一个整数,按相反顺序输出该数。例如,输入为3578,则输出8753

while True:no = input('请输入一个整数:')if no.isdecimal():print(no[::-1])   # 方法1,切片# 方法2:将字符串转换为列表,将类别元素反向,将列表元素拼接成一个字符串tmp = list(no)tmp.reverse()print(''.join(tmp))breakelse:print('输入错误,请重新输入')

一个10000以内整数,它加上100和加上268后都是一个完全平方数(比如9,16等),请问该数是多少?

# 方法1:整数n开方后取整,判断整数部分的平方是否等于n
for i in range(10000):n = int((i+100)**0.5)m = int((i+268)**0.5)if n**2 == i+100 and m**2 == i+268:print(i)# 方法2:整数n开方后对1求余,判断余数是否为0
for i in range(10000):if (i+100)**0.5%1 == 0 and (i+268)**0.5%1 == 0:print(i)

计算200以内的所有质数(即只有1和其自身能够被这个数整除的数,比如3,5,7,13等)

for i in range(2,200):for j in range(2,i):if i%j == 0:breakelse:print(i)for i in range(2,200):flag = 1for j in range(2,i):if i%j == 0:flag = 0breakif flag == 1:print(i)

输入一个1-10之间的整数,计算这个数的阶乘(5! = 5X4X3X2X1)

n = input('请输入1个1-10的整数:')
if n.isdecimal() and 1 <= (n:=int(n)) <= 10:  # 检查输入的内容是否合法j = 1   # 保存阶乘for i in range(1,n+1):j *= iprint(f'{n}的阶乘为:{j}')
else:print('输入错误,请输入1个1-10的整数')

输入3个1-10之间的整数,分别表示三角形的三条边。判断这3条边能否构成三角形,如果能输出三角形的类型(普通三角形、等腰三角形、等边三角形、直角三角形,并且计算出三角形的面积(海伦公式)

n = input('请输入1个1-10的整数:')
p = input('请输入1个1-10的整数:')
q = input('请输入1个1-10的整数:')
# 检查输入的内容是否合法
if (n+p+q).isdecimal() and 1 <= (n:=int(n)) <= 10 and 1 <= (p:=int(p)) <= 10 and 1 <= (q:=int(q)) <= 10:# 检查输入的3个整数是否能组成三角形if n+p > q and n+q > p and p+q > n:# 判断三角形类型if n == p and p == q:result = '等边三角形'elif n == p or p == q or n==q:result = '等腰三角形'else:result = '普通三角形'l = (n+p+q)/2   # 半周长s = (l*(l-n)*(l-q)*(l-p))**0.5  # 面积print(f'{n}、{p}、{q}构成{result},面积为:{s:.2f}')else:print(f'{n}、{p}、{q}不能构成三角形')
else:print('输入错误,请输入1个1-10的整数')

使用字典保存用户信息userinfo = {‘1001’:[‘杨洋’,‘123456’,1000.00], ‘1002’:[‘张琳琳’,‘123123’,9865.98], ‘1003’:[‘杨一二’,‘000000’,100.00]},完成注册功能。输入账号、姓名、密码(必须为6位,只能包含数字)、余额

如果账号存在,提示'账号已存在,请重新输入'如果密码不符合要求,提示'密码不符合要求,请重新输入'注册成功后,提示'注册成功',将用户信息添加到字典中
userinfo = {'1001':['杨洋','123456',1000.00],'1002':['张琳琳','123123',9865.98],'1003':['杨一二','000000',100.00]}
while True:acc = input('账号:')name = input('姓名:')pwd = input('密码:')bal = input('余额:')if acc in userinfo:    # 检查账号是否存在print('账号已存在,请重新输入')continueif len(pwd) != 6 or pwd.isdecimal() == False:  # 检查密码是否为6位纯数字print('密码不符号要求,请重新输入')continueif bal.replace('.','',1).isdecimal() == False:  # 检查余额是否合法print('余额输入错误,请重新输入')continue# 将信息保存到字典中userinfo[acc] = [name,pwd,float(bal)]print(userinfo)break

输入三个整数分别表示年、月、日,统计出这个日期为当年的第多少天

while True:y = input('年:')m = input('月:')d = input('日:')month_day = [31,28,31,30,31,30,31,31,30,31,30,31]  # 保存每个月的天数if (y + m + d).isdecimal() and (y := int(y)) and 1 <= (m := int(m)) <= 12 and 1 <= (d := int(d)) <= 31:if m in (4, 6, 9, 11) and d == 31:  # 检查小月天数是否合法print('小月天数不能超过30')continueif y%4 == 0 and y%100 != 0 or y%400 == 0:  # 判断年份是否为闰年if m == 2 and d > 29:   # 检查闰年2月天数print('闰年2月天数不能超过29')continuemonth_day[1] = 29  # 将列表中第二个月的天数变为29else:if m == 2 and d > 28:   # 检查平年2月天数print('平年2月天数不能超过28')continuetotal = sum(month_day[:m-1])+d   # 计算总天数print(f'{y}年{m}月{d}日为{y}年的第{total}天')breakelse:print('输入错误,请输入正确的年、月、日')

python 基础之 控制结构 篇相关推荐

  1. Python数据结构与算法(1.4)——Python基础之控制结构

    Python数据结构与算法(1.4)--Python基础之控制结构 0. 学习目标 1. 代码块与缩进 2. 条件语句 2.1 if 语句 2.2 if 语句的嵌套 2.3 断言 3. 循环 3.1 ...

  2. Python基础语法入门篇(一)

    Python基础语法入门篇(二) 1. 注释 在我们工作编码的过程中,如果一段代码的逻辑比较复杂,不是特别容易理解,可以适当的添加注释,以辅助自己 或者其他编码人员解读代码. 注释是给程序员看的,为了 ...

  3. Python基础之控制结构

    Python基础之控制结构 Python中控制结构分为分支结构与循环结构. 1.分支结构 (1) if 结构 适用于只有一种选择的时候 语法结构 if 条件 :代码操作 例: # 定义一个变量,存储一 ...

  4. python基础-第六篇-6.2模块

    python之强大,就是因为它其提供的模块全面,模块的知识点不仅多,而且零散---一个字!错综复杂 没办法,二八原则抓重点咯!只要抓住那些以后常用开发的方法就可以了,哪些是常用的?往下看--找答案~ ...

  5. python 基础第六篇

    回顾上周所有内容 python基础 Python是一门解释型. 弱类型语言 print("内容", "内容", end="\n") 打印语句 ...

  6. python将姓王的都改成老王_老王Python基础+进阶+项目篇(高清无密)

    老王Python教程 基础篇 基础篇1-福利课python先入为主上 基础篇2-福利课-python先入为主下篇 基础篇3-虚拟机安装xubuntu开发环境 基础篇4-linux基本命令以及开发环境 ...

  7. python 程序流程控制结构-Python基础—程序控制结构

    程序控制结构 1.条件判断语句if...else 根据条件选择执行方向 单分支结构 if <条件>: <语句块> 二分支结构 if <条件>: <语句块> ...

  8. 史上最全的 python 基础知识汇总篇,没有比这再全面的了,建议收藏

    网友们有福了,小编终于把基础篇的内容全部涉略了一遍,这是一篇关于基础知识的汇总的文章,请朋友们收下,不用客气,不过文章篇幅肯能会有点长,耐心阅读吧 爬虫(七十)多进程multiprocess(六十一) ...

  9. Python基础-程序控制结构

    学习自马哥Python while while bool_expression:while_suite else:else_suite break:跳出最内层的循环 continue:跳到所处的最近层 ...

最新文章

  1. C#线程同步的几种方法
  2. 【数字信号处理】数字信号处理简介 ( 抽样定理 | 多抽样率 )
  3. 2021-11-16数据结构
  4. 基于mysql数据库binlog的增量订阅消费
  5. java将xml中的标签名称转为小写_深入学习Java Web(七): JSTL标签库
  6. 酱油和gbt酱油哪个好_酱油可不是越贵越好?看清瓶身上的5个字,教你1分钟买到好酱油...
  7. navigator.geolocation的应用 - 将定位信息显示在百度地图上
  8. 装逼神器,5 行 Python 代码 实现一键批量扣图,你get到了吗
  9. 装箱问题(洛谷-P1049)
  10. mysql pdo手册_灾难恢复 - [ MySql参考手册 ] - 在线原生手册 - php中文网
  11. Atitit   图像处理 平滑 也称 模糊, 归一化块滤波、高斯滤波、中值滤波、双边滤波)
  12. Imc手机连环画PC阅读器
  13. win32com 读取excel
  14. 如何将音频从视频分离到单独的音轨?
  15. kdj指标主要看哪个值_史上最全KDJ指标用法详解,学习KDJ指标看这一篇就够了
  16. k8s初始化报错[kubelet-check] Initial timeout of 40s passed.
  17. 如何给纸壳箱上装,#ps修图p图抠图视频教程小白入门基础课程
  18. javaFX 界面例子
  19. 【CSS】课程网站 Banner 制作 ① ( Banner 栏测量 | Banner 盒子模型代码 | 代码示例 )
  20. 使用决策树算法预测西瓜的好坏

热门文章

  1. 机器学习驱动的语言测试
  2. android 大字体,大字体下载-大字体Big Font 3.21 安卓版-我游网
  3. 域控内使用策略部署和软件分发
  4. 华为服务器 远程虚拟控制 如何连接
  5. 《Linux C编程从入门到精通》一1.4 Linux的常用命令
  6. 2019年下半年教师资格幼儿园《保教知识与能力》真题与参考答案
  7. window 10 电脑有网,其他浏览器可以正常打开,谷歌浏览器无法打开如何解决。
  8. 钉钉新上线的「文字表情」功能--原来消息还可以这么回!
  9. Compose主题切换——让你的APP也能一键换肤
  10. 怎么用计算机截图快捷键,教您怎么使用电脑自带的截图快捷键