课程概述:
目录
学习收获
- 掌握python 分支结构
- 掌握python 循环结构
任务1:语言的结构--理论知识
每一门开发语言都有规范和结构,规范如变量名、函数名等命名规范,结构则是指写代码需要遵守的语法规则以及程序执行代码的逻辑顺序。几乎每一门开发语言,基本的语言结构都是通用的,就和开发的面向对象思想一样。
在Python里,如果总结出代码结构,应该分三种:
顺序结构:代码执行的基本原则就是从上往下逐行执行
选择分支结构:满足条件的代码被执行;不满足的不执行
循环结构:满足条件的代码被重复执行
任务2:选择分支结构(条件判断语句)
1、 选择分支结构的应用模板
模板:
if 条件1:
[Tab缩进]满足条件的代码片段
elif (可选)条件2:
[Tab缩进]满足条件的代码片段
elif (可选)条件n:
[Tab缩进]满足条件的代码片段
else: # (可选)
[Tab缩进]不满足本分支结构内的上述条件的代码片段
number = int(input('请输入1~3的正整数:'))
if number == 1:
print('一')
elif number == 2:
print('二')
elif number == 3:
print('三')
else:
print('你输入的不是1~3的正整数!')
运行结果图如下:
任务3:单条件形态 (if...)
#例子1 成年人的世界都不容易
age = int(input('老王,请输入你的年龄:'))
if age >= 18:
print('成年人的世界都不容易,耗子尾汁!')
参考结果:
任务4: 多条件形态 (if... else...)
1:多条件形态1 (if... else...)
# 例子1期末考试分数评级系统
# 需求:满分100分
# 95分以上 -- S
# 80~94分 -- A
# 60~79分 -- B
# 60分以下 -- C
score = int(input('请输入期末考试的成绩:'))
if score > 95:
print('你的期末评级是S。')
elif score >= 80 and score <= 94:
print('你的期末评级是A。')
elif 60 <= score <= 79:
print('你的期末评级是B。')
elif score <= 59:
print('你的期末评级是C。')
else:
pass
参考结果:
任务5: 嵌套条件
if结构中也可以嵌套if本身
# 例子1: LOL民间高玩对战报名系统
print('欢迎来到LOL民间高玩对战报名系统...')
rank = input('请输入你的最高段位:')
if rank in ('最强王者', '超凡大师', '钻石1') :
position = input('请输入你要报名的位置:')
if position in ['上单', '中单', 'ADC']:
print('你所报名的位置已满。')
elif position == '打野' or position == '辅助':
print('报名成功!')
else:
print('输入错误!我们没有你输入的{}这个位置。'.format(position))
else:
print('对不起,你的段位不符合本次报名条件。')
参考结果:
任务6: while循环结构
循环结构说明: 可以指定程序范围反复执行
#while循环结构的格式:
while 条件:
满足条件反复执行的代码
# 例子1: 打印1~10
i = 1
while i <= 10:
print(i) # 默认情况下等同于:print(i, end='\n')
i = i + 1 # 或者写成 i += 1
# 知识补充:下面的代码意思是打印36个'-'字符
print('-'*36)# 例子2:打印10~1
j = 10
while j >= 1:
# 知识补充:print()方法有一个end默认参数,默认值是'\n'即:回车,意思是打印完毕后以换行符作为结尾
# 你可以对这个end默认参数填写其他值,比如我想要所有的数字在一行显示,那么我就填写' ',注意引号之间有一个空格
print(j, end=' ')
j -= 1 # 或者写成 j = j - 1
print('\n')
print('-'*36) # 打印一条横线# :例子3:打印10~1的另一种写法
k = 10
while k: # 当k等于0的时候代表“假”,所以不会进循环
print(k, end='、')
k = k - 1
print('\n')
print('k最终的值是:{}'.format(k))
print('-'*36) # 打印一条横线
部分参考结果:
任务7:for... in...循环
#for循环的格式:
for 循环变量 in range()或者列表或者字符串:
循环体
# 例子1: 利用range()方法打印1~10
# 知识补充:Python自带的range()方法可以自动生成一个以“顺序的从0到n-1的n个数字”的元组数组
# 如果n=10,那么会生成10个数字,但这10个数字装入元组数组的是(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
for i in range(10):
# 因为生成的是0~9,但我们需要打印1~10,所以每次打印i的时候+1即可
print(i + 1, end=' ')
print('\n')
print('-'*36) # 打印一条横线# 例子2: 利用range()方法打印1~10的另一种写法
for j in range(1, 11):
# range()方法也可以使用2个参数range(x, y),和切片的原理一样。
# 说明:注意这里是包含从x开始到不包含y结束,是一个左闭右开区间。
print(j, end=' ')
print('\n')
print('-'*36) # 打印一条横线# 例子3: 巧用range()方法打印1~10的偶数
# 偶数是能够被2所整除的整数,即:余数为0.
# 原则上讲,我们需要在循环结构里嵌套使用“(条件)选择分支结构”,
# 但如果巧妙利用range()方法的3参数用法,就可以省事很多
for k in range(2, 11, 2):
# range()方法也可以使用3个参数range(x, y, z),和切片的原理一样,
# 参数z代表每隔z位显示值,这里z=2,那么就是每隔2位显示值,
# 数字2是1~10的第1个偶数,所以我们要设置x下标为2,正好对应数字2
print(k, end=' ')
print('\n')
print('-'*36) # 打印一条横线# 例子4: 我“爱”当红流量明星
# for... in...循环本质上其实就是列表或元组的循环
# 假设有一个娱乐网站的接口的服务器响应报文里是一个当红流量明星名字的列表,如下:
# ['易烊千玺', '王一博', '李现', '张艺兴', '关晓彤'],循环表达对他们的“爱”
super_stars = ['易烊千玺', '王一博', '李现', '张艺兴', '关晓彤']
# 变量命名很有讲究,我们喜欢用英语单数表示被循环元素,用英语复数表示整个列表或元组循环体
for super_star in super_stars:
print('我"爱"{}。'.format(super_star)) # 注意:这里每次循环打印的是单数,也就是被循环元素
部分参考结果:
任务8: 循环打断语句
在Python中,想要打断循环,可以使用continue或break关键字(必须全小写):
continue仅仅打断所在循环体的本次循环轮次
break完全打断所在循环体的剩余所有轮次(即:所在循环体不循环了)
1:continue
# 例子1:打印1~10的偶数
# 偶数是能够被2所整除的整数,即:余数为0.
for i in range(1, 11):
if i % 2 != 0:
continue
print(i, end=' ')
print('\n')
print('-'*36) # 打印一条横线
# 例子2:打印数字5~1,跳过数字4
# 错误写法(死循环了),请注释掉:
# j = 5
# while j >= 1:
# if j == 4:
# # 死循环的原因在这,j=4的时候,满足了条件分支,
# # 会执行到continue,直接跳过本次循环轮次,来到下一轮
# # 但由于无法执行到j-=1,所以j永远是4,无限满足条件分支,无限循环下去。。。
# continue
# else:
# print(j, end=' ')
# j -= 1 # 等同于j = j - 1
# print('\n')
# print('-'*36) # 打印一条横线
# 正确写法(只要一步,妙手回春):
j = 5
while j >= 1:
if j == 4:
# 放在这里,在打断本次循环轮次前,先让j-1,保证j的数字可以继续递减,使得循环得以继续
j = j - 1
continue
# j = j - 1
# 切记,这句话不可以放在continue后面,因为永远执行不到这句话的
else:
print(j, end=' ')
j -= 1 # 等同于j = j - 1
print('\n')
print('-'*36) # 打印一条横线
预期参考1:
预期参考2:
2:break
# 【案例分享】主人,您真帅!
while True:
answer = input('主人,您有什么话和我说吗?')
if answer == '退下':
print('遵命,主人!')
# break作用:打断本循环体的剩余轮次(无限循环就是无限轮次),即:完全打断(跳出)本循环体的循环
break
else:
print('主人,您真帅!')
预期结果:
相互嵌套的综述
循环语句里嵌套循环语句(俗称:双循环,但很少有三循环及以上了)
循环语句里嵌套条件分支语句
条件分支语句里嵌套条件分支语句
条件分支语句里嵌套循环语句扩展
任务9: 综合案例分享
案例1:输入三个正整数,判断它们是否可以构成三角形,如果可以构成三角形,具体是等边三角形、等腰三角形还是普通三角型?根据需求写出这段程序,最后需要输出结果给用户。
需求分析和思路梳理: (1) 先要满足三角形的形成条件,即:任意两边之和大于第三边(大前提)。 (2) 如果没有满足条件(1)就不是三角形。 (3) 在满足了条件(1)这个大前提下,我们再考虑是具体什么形状的三角形。 ① 等边三角形:三边相等; ② 等腰三角形:任意两边相等; ③ 普通三角形:不满足上述①和②的情况。
a = int(input('请输入第一条边的长度(正整数):'))
b = int(input('请输入第二条边的长度(正整数):'))
c = int(input('请输入第三条边的长度(正整数):'))
# 满足了构成三角形的形成条件才是大前提
# 但是不确定是否满足,所以是if语句,即:如果
if a + b > c and a + c > b and b + c > a:
# 三边相等 ==> 等边三角形
if a == b == c:
print('等边三角形')
# 任意两边相等 ==> 等腰三角形
elif a == b or a == c or b == c:
print('等腰三角形')
# 其他情况 ==> 普通三角形
else:
print('普通三角形')
# 除了上述的if条件外,其它任何情况都不满足三角形的形成条件,所以是else
else:
print('不是三角形')
预期结果参考:
案例2:输入一个整数,判断这个数字是否是素数,并输出结果。
素数的定义:只能被1和本身整除的数。
需求分析和思路梳理: (1) 素数也叫质数,是个自然数(正整数)。 if
(2) 素数只能被1和本身整除(整除就是余数等于0)。9 28 依次试一遍 n ==》range(2n)
num = int(input('主人,请输入一个整数,我来帮您判断它是不是素数:'))
if num <= 1:
print('主人,抱歉,您输入的{}不是素数。'.format(num))
else:
for i in range(2, num):
if num % i == 0:
print('主人,抱歉,您输入的{}不是素数。'.format(num))
break
# 知识补充:循环语句也可以有else,当循环体的循环轮次完全顺利地执行完毕后会进入else代码块
# 但是,如果没有完全执行完毕就退出了,比如上面代码里使用break打断循环的情况,则循环结束后也不会进入else代码块
else:
print('主人,您输入的{}是素数。'.format(num))
预期结果参考: