Python是一种简单而强大的编程语言,它提供了多种结构和语句,使得程序编写变得更加灵活和高效。在本文中,将介绍Python中的顺序结构、循环结构、程序跳转语句以及pass空语句,并解释如何正确使用它们。
目录
- 程序的描述方式
- 自然语言
- 流程图
- 伪代码
- 程序的组织结构
- 顺序结构
- 选择结构
- 循环结构for与while
- 程序跳转语句
- break和continue
- pass空语句
- 总结
- 本章总结
- 习题讲解
程序的描述方式
自然语言
自然语言:就是使用人类语言,直接描述程序,比如说要去计算一个圆的周长和面积,就可以使用之前所学过的
IPO
方式去进行描述。
流程图
流程图:是用一系列图形、流程线和文字描述程序的基本操作和控制流程,主要适用于较短的算法。
伪代码
伪代码:是介于自然语言和编程语言之间的一种算法描述语言,如果程序比较小,可以直接使用代码描述。
程序的组织结构
顺序结构
顺序结构:按程序语句的自然顺序,从上到下,依次执行每条语句的程序,它是程序当中最基本的语句。
# 顺序结构
# 赋值运算符的顺序,从右到左,先计算右侧的结果,再赋值给左侧的变量
name='摔跤猫子'
age=20
a=b=c=d=100 # 链式赋值
a,b,c,d='摔跤猫子' # 字符串分解赋值
print(a)
print(b)
print(c)
print(d)
print('----------典型的顺序结构:输入/输出语句----------')
name=input('请输入您的姓名:')
age=eval(input('请输入您的年龄:'))
print('您的姓名为:',name,',您的年龄为:',age)
选择结构
选择结构:也称分支结构,是按照条件选择执行不同的代码段。
# 单分支结构if
number=eval(input('请输入您的6位中奖号码:'))
# 使用if语句
if number==987654: # 等值判断
print('恭喜您,中奖了!')
if number!=987654:
print('您未中奖!')
print('以上if判断的表达式,是通过比较运算符计算出来的,结果是布尔值类型')
n=98 # 赋值操作
if n%2: # 98%2的余数是0,0的布尔值是False,非0的布尔值是True
print(n,'是奇数') # 由于98和2的余数是0,所以改行代码不执行
if not n%2: # not False的结果为True
print(n,'是偶数')
print('----------判断一个字符串是否是空字符串----------')
x=input('请输入一个字符串:')
if x: # 在Python中一切皆对象,每个对象都有一个布尔值,而非空字符串的布尔值为True,空字符串的布尔值为False
print('x是一个非空字符串')
if not x: # 空字符串的布尔值为False,取反,not False的值为True
print('x是一个空字符串')
print('----------表达式也可以是一个单纯的布尔型变量----------')
flag=eval(input('请输入一个布尔类型的值:True或False'))
if flag:
print('flag的值为True')
if not flag:
print('flag的值为False')
使用if语句时,如果语句块中只有一句代码,可以将语句块直接写在冒号的后面。
a=10
b=5
if a>b:max=a # 语句块只有一句,赋最大值
print('a和b的最大值为:',max)
双分支结构:
if...else...
语法结构
# 双分支结构
number = eval(input('请输入您的6位中奖号码:'))
# if..else...
if number==123456:
print('恭喜您中奖了')
else:
print('您未中奖')
# 以上代码可以使用条件表达式进行简化
print('恭喜您中奖了' if number==123456 else '您未中奖')
多分支结构
# 多分支结构
score=eval(input('请输入您的成绩:'))
if score<0 or score>100:
print('请输入正确的成绩。')
elif 0<=score<60:
print('成绩为E')
elif 60<=score<70:
print('成绩为D')
elif 70<=score<80:
print('成绩为C')
elif 80<=score<90:
print('成绩为B')
else:
print('成绩为A')
嵌套if的使用。
# 嵌套if的使用
answer=input('请问您喝酒了吗?')
if answer=='y': # 表示喝酒了
proof=eval(input('请输入酒精含量:'))
if proof<20:
print('暂未构成酒驾,祝您一路顺风')
elif proof<80:
print('已构成酒驾,请下车')
else:
print('已构成醉驾,请下车')
else:
print('你走吧,没你事了')
使用and连接多个选择条件。
userName=input('请输入您的用户名:')
pwd=input('请输入您的密码:')
if userName == '摔跤猫子' and pwd == '123':
print('验证通过')
else:
print('账号或密码错误')
使用or连接多个判断条件。
# 使用or连接多个选择条件
score = eval(input('请输入您的分数:'))
if score<0 or score>100:
print('请输入正确的分数')
else:
print('您的分数为:',score)
Python3.11新特性,模式匹配。
# Python3.11新特性,模式匹配
score=input('请输入成绩等级:')
match score:
case 'A':
print('优秀')
case 'B':
print('良好')
case 'C':
print('中等')
case 'D':
print('及格')
case 'E':
print('不及格')
循环结构for与while
遍历字符串
for i in '摔跤猫子':
print(i)
range函数,Python中的内置函数,产生一个[n,m]的整数序列,包含n,但是不包含m
for i in range(1,5):
print(i)
# 计算1-10之间的累加和
h=0 # 用于计算累加和的变量
for i in range(1,11):
h+=i # 相当于 h=h+i
print('累加和为:',h)
for…else…结构。
h=0 # 用于计算累加和
for i in range(1,11):
h+=i
else:
print('1-10之间的累加和为:',h)
无限循环while,需要注意的是在while循环当中你的初始化变量,条件判断的变量和改变的变量通常都为1个。
answer=input('今天要上班吗?请输入[y/n]:')
# 2.条件判断
while answer=='y':
# 3.语句块
print('早点下班')
# 4.改变变量
answer=input('今天要上班吗?请输入[y/n]:')
使用无限循环while计算1-200之间的累加和。
v=0 # 定义变量存储累加和
# 1.初始化变量
i=1
# 2.条件判断
while i<=200:
# 3.语句块
v+=i
# 4.改变变量
i+=1 # 相当于i=i+1
print('1-200之间的累加和为:',v)
无限循环也有一种扩展形式叫做while-else结构,当你在while整个的循环当中全都执行完毕了,中途没有遇到任何break中断循环的情况,那么就可以使用while-else结构了。
v=0 # 定义变量存储累加和
# 1.初始化变量
i=1
# 2.条件判断
while i<=200:
# 3.语句块
v+=i
# 4.改变变量
i+=1 # 相当于i=i+1
else:
print('1-200之间的累加和为:',v)
使用while循环模拟用户登录,在进行登录操作的时候,除了输入用户名和密码之外,再给它设置三次机会,三次均输入错误后就没办法登录系统了,三次之内,只要正确一次即通过
# 1.初始化变量
i=0
# 2.条件判断
while i<3:
# 3.语句块
userName=input('请输入用户名:')
pwd=input('请输入密码:')
# 登录操作
if userName=='摔跤猫子' and pwd=='123':
print('登录成功')
# 需要改变循环变量,目的是为了退出循环
i=4 # 退出while循环
else:
if i<2:
print('用户名或密码错误,您还有',2-i,'次机会!')
# 改变变量
i+=1 # 相当于i=i+1
if i==3: # 当用户名或密码三次输错时,循环结束,进行提示
print('账号已冻结,请联系管理员进行解封')
循环结构也可以互相嵌套,在一个循环结构中嵌套另外一个完整的循环结构就称为嵌套循环。理论上是可以无限嵌套的,但是在实际开发中,建议不要超过三层,因为在嵌套循环结构当中,内层循环实际上是在给外层循环做语句块部分的。
长方形和直角三角形的输出。
# 三行四列 长方形
for i in range(1,4): # 通过最外层循环 控制行数
for j in range(1,5): # 内层循环控制打印的列数
print('*',end='')
print() # 空的print语句,作用是换行
print('----------------------------------------')
# 直角三角形
for i in range(1,6):
for j in range(1,i+1):
print('*',end='')
print()
倒三角形。
for i in range(1,6):
for j in range(1,7-i):
print('*',end='')
print()
等腰三角形。
for i in range(1,6): # 外层循环 执行五行
for j in range(1,6-i): # 打印倒三角形
print(' ',end='')
for k in range(1,i*2): # 打印等腰三角形
print('*',end='')
print()
菱形
row=eval(input('请输入菱形的行数:'))
while row%2==0: # 判断行数的奇偶性,行数是偶数,重新输入
# print('请重新输入菱形的行数:')
row = eval(input('行数是偶数,请重新输入菱形的行数:'))
# 输出菱形
top_row=(row+1)//2 # 上半部分的行数
for i in range(1,top_row+1):
for j in range(1,top_row+1-i): # 打印倒三角形
print(' ',end='')
for k in range(1,i*2): # 打印等腰三角形
print('*',end='')
print()
# 菱形下半部分
bottom_row=row//2 # 下半部分的行数
for i in range(1,bottom_row+1):
for j in range(1,i+1):
print(' ',end='')
# 倒三角
for j in range(1,2*bottom_row-2*i+2):
print('*',end='')
print()
空心菱形,它的最左侧和它的最右侧是*,其他的地方都是由空格组成。
row=eval(input('请输入菱形的行数:'))
while row%2==0: # 判断行数的奇偶性,行数是偶数,重新输入
# print('请重新输入菱形的行数:')
row = eval(input('行数是偶数,请重新输入菱形的行数:'))
# 输出菱形
top_row=(row+1)//2 # 上半部分的行数
for i in range(1,top_row+1):
for j in range(1,top_row+1-i): # 打印倒三角形
print(' ',end='')
for k in range(1,i*2): # 打印等腰三角形
if k==1 or k==i*2-1:
print('*',end='')
else:
print(' ',end='')
print()
# 菱形下半部分
bottom_row=row//2 # 下半部分的行数
for i in range(1,bottom_row+1):
for j in range(1,i+1):
print(' ',end='')
# 倒三角
for k in range(1,2*bottom_row-2*i+2):
if k==1 or k==2*bottom_row-2*i+2-1:
print('*',end='')
else:
print(' ',end='')
print()
程序跳转语句
break和continue
程序跳转语句break在while无限循环中的使用。非正常结束不会执行else部分,当循环完整的执行完成之后,在整个的过程当中没有遇到任何break的时候会执行else部分。
z=0 # 定义一个变量存储累加和
i=1 # 初始化变量
while i<11: # 条件判断
z+=i # 语句块
if z>20:
print('累加和大于20的当前数是:',i)
break
i+=1 # 改变变量
print('------------------')
i=0 # 初始化变量,统计登录的次数
while i<3: # 条件判断
userName = input('请输入用户名:')
pwd = input('请输入密码:')
if userName=='摔跤猫子' and pwd =='123':
print('登录成功')
break
else:
if i <2:
print('用户名或密码不正确,您还有',2-i,'次机会')
i+=1 # 改变变量
else:
print('账号已冻结')
break在遍历循环当中的使用。
程序就输出了一个摔跤,因为循环的时候它发现摔跤和猫不相等,if条件判断不成立,直接进行输出,输出完成之后又回到循环的判断处,从字符串中把猫取出来赋值给i,然后拿i再进行匹配,条件为true并执行了break,后续的代码都不再进行执行,循环结束。
for i in '摔跤猫子':
if i == '猫':
break
print(i)
通过遍历循环判断用户名和密码
for i in range(3):
userName = input('请输入用户名:')
pwd = input('请输入密码:')
if userName=='摔跤猫子' and pwd =='123':
print('登录成功')
break
else:
if i <2:
print('用户名或密码不正确,您还有',2-i,'次机会')
i+=1 # 改变变量
else:
print('账号已冻结')
除了break语句之外还有一个跳转语句,就是continue,它跟break作用不同,break是用于退出循环结构,continue的作用是用于跳出本次循环。
计算1-100之间的偶数和。
z=0 # 定义一个变量存储累加和
i=0 # 初始化变量
while i<=100: # 条件判断
# 语句块
if i%2==1: # 奇数
i+=1
continue # 不再执行后面的代码
# 累加求和的代码
z+=i
i+=1
print('1-100之间的偶数和为:',z)
continue在for循环当中的使用
s=0
for i in range(1,101):
if i % 2 == 1: # 奇数
continue
s+=i
print('1-100之间的偶数和为:',s)
pass空语句
pass是Python中的保留字,在语法结构中只起到占位符作用。
如果只写一个
if True
会报错,因为没有写语句块,写一个pass后,语法结构就准确了。
总结
本章总结
- 程序的描述方式有三种:自然语言、流程图和伪代码;
- 程序的组织结构有三种:顺序结构、选择结构(分支结构)、循环结构;
- 选择结构分单分支结构(
if
)、双分支结构(if...else...
)和多分支结构(if...elif...else...
); - Python3.11新特性模式匹配
match...case...
结构; - 循环结构有两种:遍历循环
for
和无限循环while
; if
结构可以互相嵌套,循环结构也可以互相嵌套,建议最多不超过三层;break
和continue
只能用在循环结构中,break
用于退出整个循环结构,continue
用于结束本次循环而进入下一次循环;- 空语句
pass
起到占位符的作用,使语法结构完整、不报错。
习题讲解
📄1:以下选项符合Python语法要求且能够正常执行的是?
⬜️A:min=x if x<y=y
✅B:min=x if x<y else y
⬜️C:if(x>y) print(x)
⬜️D:min=x>y?x:y
📄2:下面代码的输出结果是?
⬜️A:0
⬜️B:1
✅C:1,3,5,7
⬜️D:0,2,4,6
📄3:以下选项中不能退出循环的是?
✅A:2
⬜️B:3
⬜️C:4
⬜️D:5
📄4:下面代码输出的图形是?
✅A:
⬜️B:
⬜️C:
⬜️D:
📄5:下面代码的输出结果是?
⬜️A:0
✅B:10
⬜️C:11
⬜️D:15
📄6:下面代码的输出结果是?
⬜️A:Welcome
✅B:Welcome to
⬜️C:BeiJing
⬜️D:Welcome to BeiJing
📄7:下面代码的输出结果是?
⬜️A:ppyytthhoonn
⬜️B:python
⬜️C:ppyytt
✅D:ppyytthoonn
📄8:以下程序中,while循环的执行次数是?
⬜️A:10次
⬜️B:4次
✅C:死循环
⬜️D:5次