第四章 Python程序的流程控制

这篇具有很好参考价值的文章主要介绍了第四章 Python程序的流程控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第四章 Python程序的流程控制

程序的组织结构

第四章 Python程序的流程控制,Python,python

顺序结构

顺序结构:按程序语句的自然顺序,从上到下,以此执行每条语句的程序。

# 赋值运算符的顺序:从右到左
name = '张三'
age = 20
a = b = c = d = 100  # 链式赋值
a, b, c, d = 'room'  # 字符串分解赋值 ---> a=r,b=o,c=o,d=m
print(a, b, c, d)

第四章 Python程序的流程控制,Python,python

选择结构

单分支if

单分支结构 if 的语法结构:

if 表达式 :
  语句块

注意冒号和下一行的缩进是非常重要的(在Python中是通过冒号和缩进来控制程序逻辑的)。
第四章 Python程序的流程控制,Python,python

number = eval(input('请输入您的6位中奖号码:'))
# 使用if语句
if number == 123456:
    print('恭喜您中奖了!')

if number != 123456:
    print('您未中本期大奖')

n = 98  # 赋值操作
if n % 2:  # 98%2的余数是0,0的布尔值是False,非0的布尔值为True
    print(n, '是奇数')  # 由于98%2的余数是0,所以该行代码不执行

if not n % 2:  # 98%2的余数是0,0的布尔值是False,not False的结果为True
    print(n, '为偶数')

print('-------判断一个字符串是否是空字符串--------')
x = input('请输入一个字符串:')
if x:  # 在Python中一切皆对象,每个对象都有一个布尔值,而非空字符串的布尔值为True,空字符串的布尔值为False
    print('x是一个非空字符串')

if not x:  # 非空字符串的布尔值为True,取反,not False的结果为True
    print('x是一个空字符串')

print('-------表达式也可以是一个单纯的布尔型变量--------')
flag = eval(input('请输入一个布尔类型的值:True或False'))
if flag:
    print('flag的值为True')
if not flag:
    print('flag的值为False')

print('-------使用if语句时,如果语句中只有一句代码,可以将语句块直接写在冒号的后面--------')
a = 10
b = 5
if a > b: max = a  # 语句块只有一句
print('a和b的最大值为:', max)

第四章 Python程序的流程控制,Python,python

双分支if else

双分支结构 if…else… 的语法结构:

if 表达式 :
  语句1
else :
  语句2

第四章 Python程序的流程控制,Python,python

number = eval(input('请输入您的6位中奖号码:'))
# if...else...
if number == 123456:
    print('恭喜您中奖了!')
else:
    print('您未中本期大奖')

print('---以上代码可以使用条件表达式进行简化---')
result = '恭喜您中奖了!' if number == 123456 else '您未中本期大奖'
print(result)
print('恭喜您中奖了!' if number == 123456 else '您未中本期大奖')
# 条件表达式:判断条件结果为True,执行if之前的语句,结果为False,就执行else之后的语句

第四章 Python程序的流程控制,Python,python

多分支结构

多分支结构的语法结构:(其中else语句可有可无)

if 表达式1 :
  语句块1
elif 表达式2 :
  语句块2
elif 表达式n :
  语句块n
else :
  语句块n+1

第四章 Python程序的流程控制,Python,python

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')

第四章 Python程序的流程控制,Python,python

嵌套if

单分支结构、双分支结构和多分支结构在实际开发中是可以相互嵌套使用的,内层的分支结构将作为外层分支结构的语句块使用。
第四章 Python程序的流程控制,Python,python

answer = input('请问您喝酒了吗?')
if answer == 'y':  # answer的值为y表示喝酒了
    proof = eval(input('请输入酒精含量:'))
    if proof < 20:
        print('构不成酒驾')
    elif proof < 80:  # 20<=proof<80
        print('已构成酒驾')
    else:  # 80<=proof
        print('已构成醉驾')
else:
    print('你走吧,没你啥事!')

第四章 Python程序的流程控制,Python,python

多个条件的连接

在使用 and 连接多个条件判断时,只有同时满足多个条件,才能执行if后面的语句块。
第四章 Python程序的流程控制,Python,python

user_name = input('请输入您的用户名:')
pwd = input('请输入您的密码:')
if user_name == 'zhong' and pwd == '123456':
    print('登录成功')
else:
    print('用户名或密码不正确')

第四章 Python程序的流程控制,Python,python

 
使用 or 连接多个判断条件时,只要满足多个条件中的一个,就可以执行if后面的语句块。
第四章 Python程序的流程控制,Python,python

score = eval(input('请输入你的成绩:'))
if score < 0 or score > 100:
    print('成绩无效')
else:
    print('你的成绩为:', score)

第四章 Python程序的流程控制,Python,python

模式匹配

在 Python 3.11 增加了模式匹配功能,虽然在Python中没有其他编程语言中switch这种表达式的结构,但是模式匹配功能相当于是switch的加强版。

score=input('请输入成绩等级:')
match score:
    case 'A':
        print('优秀')
    case 'B':
        print('良好')
    case 'C':
        print('中等')
    case 'D':
        print('及格')
    case 'E':
        print('不及格')

第四章 Python程序的流程控制,Python,python

循环结构

for循环

遍历循环for的语句结构:

for 循环变量 in 遍历对象:
  语句块

有点要说明一下,在Python中 // 是整除,而 / 不是整除。且在Python中有幂运算符 ** 。

range()函数:
第四章 Python程序的流程控制,Python,python

来源:菜鸟教程

# 遍历字符串
for i in 'hello':
    print(i)
# range()函数,Python中的内置函数,产生一个[n,m)的整数序列,包含n,但是不包含m
for i in range(1,11):
    if i%2==0:
        print(i,'是偶数')

# 计算1-10之间的累加和
s=0 # 用于存储累加和
for i in range(1,11):
    s+=i # 相当于s=s+i
print('1-10之间的累加和:',s)

'''
计算100-999之间的水仙花数。
水仙花数是指一个 3 位数,它的每个数位上的数字的 3次幂之和等于它本身。 例如:1^3 + 5^3+ 3^3 = 153
'''
for i in range(100,1000):
    sd=i%10 # 获取个位上的数,如153%10 --> 3
    tens=i//10%10 # 获取十位上的数,如153//10 --> 15%10 --> 5
    hundred=i//100 # 获取百位上的数,如153//100 --> 1
    # 有点要说明一下,在Python中 // 是整除,而 / 不是整除。且在Python中有幂运算符**
    if sd**3 + tens**3 + hundred**3 == i:
        print(i,'是水仙花数')

 
for…else…结构:

for 循环变量 in 遍历对象:
  语句块1
else
  语句块2

else语句只有在循环正常结束之后才会执行,在循环中遇到了break这种叫不正常的,遇到break叫非正常终止循环。(循环要执行10次,但执行5次后便退出了,这是非正常;循环要执行10次,最终执行10次,这是正常)

s=0 # 用于存储累加和
for i in range(1,11):
    s+=i
else:
    print('1-10之间的累加和:',s)
    
# 在这个循环中没有遇到中断情况,循环正常结束,因此会执行else

while循环

无限循环while的语句结构:

while 表达式:
  语句块

while循环的四个步骤:
1、初始化变量
2、条件判断
3、语句块
4、改变变量

值得注意的是一般来说1、2、4中的变量指的都是同一个变量

# (1)初始化变量
answer=input('今天要上课吗? y/n')
while answer=='y': # (2)条件判断
    print('好好学习,天天向上') # (3)语句块
    # (4)改变变量
    answer=input('今天要上课吗? y/n')

# 1-100之间的累加和
s=0 # 存储累加和
i=1 # (1)初始化变量
while i<=100: # (2)条件判断
    s+=i # (3)语句块
    # (4)改变变量
    i+=1 #相当于i=i+1
print('1-100之间的累加和:',s)

 
while…else…结构:

while 表达式:
  语句块1
else:
  语句块2

这里同for…else…结构是一样的,只有当循环结构正常结束时,即中间没有遇到任何break的情况,才会执行else语句。

# 1-100之间的累加和
s=0 # 存储累加和
i=1 # (1)初始化变量
while i<=100: # (2)条件判断
    s+=i # (3)语句块
    # (4)改变变量
    i+=1 #相当于i=i+1
else:
    print('1-100之间的累加和:',s)
# 在这个循环中没有遇到中断情况,循环正常结束,因此会执行else

使用while循环模拟登录

用无限while循环模拟用户登录。
用户登录共有3次机会,3次均输入错误则禁止输入

i=0 #(1)初始化变量
while i<3: #(2)条件判断
    # (3)语句块
    user=input('请输入用户名:')
    psw=input('请输入密码:')
    if user=='lxl' and psw=='123456':
        print('登录成功')
        i=6 #(4)改变变量
    else:
        if i<2:
            print('用户名或密码错误,您还有',2-i,'次机会')
        i+=1 #(4)改变变量


if i==3: #当用户名或密码输入3次不正确的时候,while循环执行结束了,i的最大值为3
    print('对不起,3次均输入错误')

嵌套循环

在嵌套循环中通常用于输出一些图形,例如长方形、三角形、菱形。

输出长方形
# 3行4列长方形。外层循环执行3次,内层循环执行4次
for i in range(1,4): #外层循环行
    for j in range(1,5): #内层循环列
        print('*',end='')
    print() #空的print语句,作用是换行

第四章 Python程序的流程控制,Python,python

输出三角形
# 直角三角形
for i in range(1,6): #5行
    # *的个数与行相同,第一行 --> range(1,2),第二行 --> range(1,3)
    for j in range(1,i+1):
        print('*',end='')
    print() #空的print语句,作用是换行

第四章 Python程序的流程控制,Python,python
 

# 倒直角三角形
for i in range(1,6): # i 表示行号,第i行
    # 第一行 --> range(1,6),第二行 --> range(1,5)
    for j in range(1,7-i):
        print('*',end='')
    print() #空的print语句,作用是换行

第四章 Python程序的流程控制,Python,python
 

# 等腰三角形
'''
&&&&*
&&&***
&&*****
&*******
*********
只需将打印出来的&换成空格即可
'''
for i in range(1,6): # i 表示行号,第i行
    # 第一行 --> range(1,5),第二行 --> range(1,4)
    for j in range(1,6-i):
        print(' ',end='')
    # 第一行 --> range(1,2),第二行 --> range(1,4),第三行 --> range(1,6)
    for j in range(1,2*i):
        print('*',end='')
    print() #空的print语句,作用是换行

第四章 Python程序的流程控制,Python,python

输出菱形
# 菱形
'''
&&&&*
&&&***
&&*****
&*******
*********
&*******
&&*****
&&&***
&&&&*
只需将打印出来的&换成空格即可.
可以发现菱形实际上是两个等腰三角形,且菱形是奇数行,因为菱形中间最长。
所以需要先判断一下菱形的行数,奇数行执行,偶数行不执行
'''

row=eval(input('请输入菱形的行数:'))
while row%2==0:
    row=eval(input('菱形的行数不能为偶数,请重新输入菱形的行数:'))

#菱形的上半部分
top_row=(row+1)//2
for i in range(1,top_row+1): # i 表示行号,第i行
    # 第一行 --> range(1,5),第二行 --> range(1,4)
    for j in range(1,top_row+1-i):
        print(' ',end='')
    # 第一行 --> range(1,2),第二行 --> range(1,4),第三行 --> range(1,6)
    for j in range(1,2*i):
        print('*',end='')
    print() #空的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()

第四章 Python程序的流程控制,Python,python
 

# 空心菱形
'''
&&&&*
&&&* *
&&*   *
&*     *
*       *
&*     *
&&*   *
&&&* *
&&&&*
只需将打印出来的&换成空格即可.
空心菱形在菱形的基础上只需让第一个和最后一个打印*即可,所以加一个判断语句即可
'''

row=eval(input('请输入菱形的行数:'))
while row%2==0:
    row=eval(input('菱形的行数不能为偶数,请重新输入菱形的行数:'))

#菱形的上半部分
top_row=(row+1)//2
for i in range(1,top_row+1): # i 表示行号,第i行
    # 第一行 --> range(1,5),第二行 --> range(1,4)
    for j in range(1,top_row+1-i):
        print(' ',end='')
    # 第一行 --> range(1,2),第二行 --> range(1,4),第三行 --> range(1,6)
    for j in range(1,2*i):
        if j==1 or j==2*i-1:
            print('*',end='')
        else:
            print(' ',end='')
    print() #空的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):
        if j==1 or j==2*bottom_row-2*i+2-1:
            print('*',end='')
        else:
            print(' ',end='')
    print()

第四章 Python程序的流程控制,Python,python

break

关于break有一个易错点见本章习题处
程序跳转语句break用于跳出循环结构,通常与if一起搭配使用。

语法结构:

while表达式1:
  执行代码
  if 表达式2:
    break

第四章 Python程序的流程控制,Python,python

s=0 #存储累加和
i=1
while i<=10:
    s+=i
    if s>20:
        print('累加和大于20的当前数是:',i)
        break
    i+=1

下面再来看学了break后,前面登录的例子如何改进:

#用户登录。有3次机会
i=0
while i<3:
    user_name=input('请输入用户名:')
    pwd=input('请输入密码:')
    if user_name=='lxl' and pwd=='123456':
        print('登录成功')
        break
    else:
        if i<2:
            print('用户名或密码错误,您还有',2-i,'次机会')
    i+=1
else: #while...else...结构,当循环正常结束时执行else;若执行了break,则不会执行else
    print('3次均输入错误,请明天重试')

 
语法结构:

for 循环遍历 in 遍历对象:
  执行代码
  if 表达式:
    break

第四章 Python程序的流程控制,Python,python

for i in 'hello':
    if i=='e':
        break
    print(i)

for i in range(3): #当range()只有一个参数时,表示循环次数,i默认从0开始
    user_name=input('请输入用户名:')
    pwd=input('请输入密码:')
    if user_name=='lxl' and pwd=='123456':
        print('登录成功')
        break
    else:
        if i<2:
            print('用户名或密码错误,您还有',2-i,'次机会')
    i+=1
else: #for...else...结构,当循环正常结束时执行else;若执行了break,则不会执行else
    print('3次均输入错误,请明天重试')

continue

continue的作用是用于跳过本次循环的后续代码,而继续执行下一次循环操作,continue在循环中通常也是与if一起搭配使用。

语法结构:

while表达式1:
  执行代码
  if 表达式2:
    continue

第四章 Python程序的流程控制,Python,python

s=0
i=1
while i<=100:
    if i%2 == 1: #奇数
        i+=1 #(3)改变变量
        continue #不再执行后面的代码了
    # 累加求和的代码
    s+=i
    i+=1 #(3)改变变量
print('1-100之间偶数的累加和为:',s)

 
语法结构:

for 循环遍历 in 遍历对象:
  执行代码
  if 表达式:
    continue

第四章 Python程序的流程控制,Python,python

s=0
for i in range(1,101):
    if i%2==0:
        continue
    s+=i
print('1-100之间偶数的累加和为:',s)

空语句pass

pass是Python中的保留字,在语法结构中只起到占位符作用,使语法结构完整,不报错。一般可用在if、for、while、函数的定义、类的定义中。

if True:
    pass

'''
以下这个是死循环
while True:
    pass
'''

for i in range(10):
    pass

章节习题

第四章 Python程序的流程控制,Python,python

for i in 'python':
    for j in range(2):
        print(i,end='')
        if i=='h':
            break

易错:注意这里break只会跳出内层循环

 
题目:模拟10086查询功能。
需求:输入1,显示当前余额;输入2,显示当前的剩余流量,单位为G;输入3,显示当前的剩余通话,单位为分钟;输入0,退出自助查询系统。

# 模拟10086查询功能
answer='y' #(1)初始化变量
while answer=='y': #(2)判断条件
    print('-----模拟10086查询功能-----')
    print('1.查询余额')
    print('2.查询当前剩余流量')
    print('3.查询当前剩余通话时长')
    print('0.退出系统')
    choice=input('请输入您要查询的内容:')
    if choice=='1':
        print('您当余额为100元')
    elif choice=='2':
        print('您当前剩余流量100G')
    elif choice=='3':
        print('您当前剩余通话时长')
    elif choice=='0':
        print('退出系统,欢迎下次使用')
        break
    else:
        print('输入有误,请重新输入')
    answer=input('还继续操作吗? y/n') #(4)改变变量
else: #while...else...结构
    print('退出系统,欢迎下次使用')

 
题目:使用嵌套循环输出九九乘法表。
需求:使用嵌套循环输出九九乘法表,内层循环与外层循环的关系,输出的数据的个数与行数相同,即第一行输出一个,1*1=1,第二行输出两个1*2=2 2*2=4 以此类推。

# 输出九九乘法表。分析:九九乘法表从形状上来看就是打印直角三角形
for i in range(1,10):
    for j in range(1,i+1):
        print(str(j)+'*'+str(i)+'='+str(i*j),end='\t')
    print()

第四章 Python程序的流程控制,Python,python
 
 
题目:猜数游戏。
需求:随机生成一个1~100之间的整数,然后用户循环猜这个数,对于用户的输入,可提示“大了”,“小了”,直到猜准确为止,输出用户的猜测次数。
产生随机数的代码如下:

import random
rand=random.randint(1,100) #产生1-100之间的随机数,包含1和100

详细的random模块方法见:菜鸟教程

实现代码:文章来源地址https://www.toymoban.com/news/detail-845914.html

#猜数游戏
import random
rand=random.randint(1,100) #产生1-100之间的随机数,包含1和100
count=1 #记录猜数的次数
while count<=10:
    number=eval(input('在我心中有个数:1-100之间,请你猜一猜'))
    if number==rand:
        print('猜对了!')
        break
    elif number<rand:
        print('小了')
    else:
        print('大了')
    count+=1 #每猜一次count次数要加1
#判断次数
if count<=3:
    print('真聪明,一共猜了',count,'次')
elif count<=6:
    print('还可以,一共猜了',count,'次')
else:
    print('猜的次数有点多啊,一共猜了',count,'次')

到了这里,关于第四章 Python程序的流程控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python笔记:第四章使用字典

    说白了就是键值对的映射关系 不会丢失数据本身关联的结构,但不关注数据的顺序 是一种可变类型 键的类型:字典的键可以是任何不可变的类型,如浮点数,字符串,元组 可以从其他映射或键值对创建字典 将字符串格式设置功能用于字典 使用format_map将两者结合起来 就地

    2024年02月13日
    浏览(63)
  • 第四章——软件测试流程和规范

    第四章 软件测试流程和规范 学完本章应该明白要做测试或者验证应该分几步,每一步应该干什么,明确一个流程。这个流程是比较标准化的。 本章将从软件过程模型出发,讨论传统的测试过程和敏捷测试过程,进而扩展到基于脚本的测试和探索式测试,然后讨论测试过程改

    2024年02月09日
    浏览(54)
  • 「第四章」python-docx 为word添加表格、设置表格边框

    第三章中,我们讲解了如何在利用 add_heading 在 docx 文档中花式添加标题,这一节,我们来一起玩一下 docx 中的 table ,也就是表格,表格部分的内容还蛮多的,我们这一章不一定讲得完,能嘚吧多少算多少,今天刚好有时间,多更新一些哇。🎃 🧡 导入 docx 库 🧡 创建 docum

    2024年02月02日
    浏览(54)
  • (数字图像处理MATLAB+Python)第四章图像正交变换-第四、五节:Radon变换和小波变换

    Radon变换 :是一种用于将图像从空间域转换到投影域的数学工具,其基本思想是将图像中每个点的灰度值投影到一组直线上,然后将这些投影合并在一起形成投影域。Radon变换可以用于多种图像处理任务,包括图像重建、特征提取、图像分割等 Radon变换原理 :给定一个函数

    2023年04月20日
    浏览(49)
  • 信息安全系统导论第四章访问控制

    1)基本目标:依据授权对提出的资源访问请求进行控制,防止对任何资源进行未授权的访问。 2)访问控制模型基本组成: 3)三要素: 主体(subject):访问的发起者,通常为进程或用户。 客体(object):可供访问的各种软硬件资源。 策略(policy):定义了主体对客体的权

    2024年02月13日
    浏览(50)
  • 《计算机网络》第四章 数据链路控制

    为什么要设计数据链路层 在原始的物理传输线路上传输数据信号是有差错的, 存在一定的误码率 。 在设计数据链路层的目的就是如何在有差错的线路上, 进行无差错传输 。向网络层提供高质量的服务。 从网络参考来看,物理层之上各层都有改善 数据传输质量 的要求,数

    2024年02月01日
    浏览(52)
  • 算法详解+代码(无人驾驶车辆模型预测控制第四章)

    首先对汽车运动学模型进行建模: ​ 设后轴速度为,前轴行速度为考虑后轴轴心的速度约束,得到和后轴速度的关系如下:                                             考虑到前后轴速度约束的运动学方程为:       设后轴行驶中心为,前轴行驶中心为,根据前后轴之

    2024年02月03日
    浏览(40)
  • ElasticSearch学习笔记-第四章 ES分片原理以及读写流程详解

    在学习ES分片原理以及读写流程之前,需要先学习一些ES的核心概念以及ES集群环境的相关知识 4.1 ES核心概念 4.1.1 索引 索引(Index)相当于MySQL中的数据库,一个索引就是一个拥有几分相似特征的文档的集合。 4.1.2 类型 类型(Type)相当于MySQL中的表,一个类型就是索引的一个逻辑上

    2024年02月06日
    浏览(61)
  • (数字图像处理MATLAB+Python)第四章图像正交变换-第一节:离散傅里叶变换

    一维离散傅里叶变换(Discrete Fourier Transform,DFT) :是一种数学技术,用于将代表离散时间信号的N个复数序列从 时域转换到频域 。DFT被广泛用于许多应用,如音频和图像处理、通信和控制系统。DFT是傅里叶变换的离散版本,傅里叶变换是一种用于分析频域信号的连续数学技

    2023年04月13日
    浏览(94)
  • 小黑子—spring:第四章 事务控制与整合web环境

    事务是开发中必不可少的东西,使用JDBC开发时,我们使用connnection对事务进行控制,使用MyBatis时,我们使用SqlSession对事务进行控制,缺点显而易见,当我们切换数据库访问技术时,事务控制的方式总会变化,Spring 就将这些技术基础上,提供了统一的控制事务的接口。Spring的

    2024年02月06日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包