Python 程序的流程控制

Python 程序的流程控制

一、顺序结构

顺序结构是最简单的控制结构,按照语句的书写顺序依次从上到下执行,这没什么好说的。

# 顺序结构

a = input("请输入长方形的长:")
b = input("请输入长方形的宽:")

# 注意:上面是 string类型,需要先转换成整型,否则无法计算
a,b = int(a),int(b)

s = a * b
print("长方形的面积为:",s)

# 输出:
# 请输入长方形的长:3
# 请输入长方形的宽:5
# 长方形的面积为: 15

二、选择结构

选择结构又分为分支结构,即按照给定条件来选择其中一个分支执行程序中特定的语句。

在 Python 语言中,选择结构分为:

  • 单选择结构(if 语句)
  • 双选择结构(if … else 语句)
  • 多选择结构(if … elif … else 语句)

1、if 语句

if 语句通过条件表达式来判断真假,当且仅当该表达式为真时,则执行语句序列,否则直接执行 if 语句下面的语句。

if 语句格式如下:

if <表达式>:
    <语句序列>

示例如下:

# if 语句示例

a = int(input("a = "))
b = int(input("b = "))

print("before exchange:",a,b)

if a > b:           # a 大于 b 则交换
    a,b = b,a 
print("after exchange:",a,b)

# 输出:
# a = 6
# b = 2
# before exchange: 6 2
# after exchange: 2 6

2、if … else 语句

if … else 语句为双选择结构,它的作用为:

  • 当某个条件为时,执行 if 里面的语句
  • 当某个条件为时,执行 else 里面的语句

非常简单,直接上例子:

# if ... else 语句

grade = int(input("请输入学生成绩:"))
if grade >= 60:
    print("及格")
else:
    print("不及格")

# 输入:
# 请输入学生成绩:60
# 及格

3、if … elif … else 语句

if … elif … else 语句为 Python 中的多选择结构,当选择结构需要的分支多于两个时,就需要用到多分支结构。

语法格式如下:

if <表达式1>:
	<语句序列1>
elif<表达式2>:
    <语法序列2>
  	 ...
elif<表达式3>:
	<语法序列3>
else:
	<语法序列4>

示例如下:

# if ... elif ... else 语句

score = float(input("请输入百分制成绩:"))

if score > 100 or score < 0:
    print("输入数据无效")
elif score >= 90:
    print("A")
elif score >= 80:
    print("B")
elif score >= 70:
    print("C")
elif score >= 60:
    print("D")
else:
    print("E")

# 输出1:
# 请输入百分制成绩:60
# D

# 输出2:
# 请输入百分制成绩:-1
# 输入数据无效

三、循环结构

循环结构是一种让指定代码块重复执行的有效机制,Python 可以使用循环使得在满足 “预设条件” 下,重复执行一段语句块。

构造循环结构的两个要素:

  • 一是循环体,即重复执行的语句和代码。
  • 二是循环条件,即重复执行代码所要满足的条件。

1、while 语句

while 语句用于实现循环结构,其特点是先判断,再执行。

如果刚进入循环是条件就不满足,则循环体一次也不执行。还需要注意的是,一定要有语句修改判断条件,使其值为假的时候退出,否则将出现 “死循环” 。while 语法格式如下:

while <表达式>:
    <语句序列>

数字累加求和,示例:

# 计算 1 + 2 + ... + 50 的和

i = 1
Sum = 0
while i <= 50:
    Sum += i
    i += 1
print("Sum = 1 + 2 + ... + 50 = ",Sum) 

# 输出:
# Sum = 1 + 2 + ... + 50 =  1275

2、for 语句

在 Python 中,for 循环可以遍历任何序列的项目,如一个列表或者一个字符串。for 循环语句的语法结构如下:

for <变量> in <序列>:
    <语句序列>

使用 for 遍历输出字符串 “ABC” ,示例如下:

# for 语句

for i in "ABC":
    print(i)

# 输出:
# A
# B
# C

统计用户输入的一段字符串中某个字符的数量,示例如下:

# 统计用户输入的一段字符串中某个字符的数量

str = input("请输入一个语句:")
i = 0
for ch in str:
    if ch == ' ':
        i = i + 1
print("这个语句有",i,"空格")

# 输出:
# 请输入一个语句:中午 吃 什么?
# 这个语句有 2 空格

我们可以创建一个 ex.txt 文件存放在本地 C 盘,在 txt 中输入 出门在外,饿了别忘吃饭,渴了别忘喝水~

使用 for 获取文件内容,代码如下:

fd = open("C:/ex.txt")
for i in fd.readlines():
    print(i)
    
# open() - Python内置函数,用于打开文件    
# fd.readlines() - 文件对象的方法,用于读取文件的所有行,返回一个列表,其中每个元素是文件中的一行(包含行尾的换行符)

# 输出:
# Python
# 无法读取汉字,编码错误,所以把文本内容改为:Python
Traceback (most recent call last):
  File "c:\Gitee\python\03_Day\for.py", line 26, in <module>
    for i in fd.readlines():
UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 10: illegal multibyte sequence

image-20251211103604113

使用 for 循环求 1~10 的整数累加,示例如下:

Sum = 0
for i in range(1,11):  # range() 不包含最后一个数字
    Sum += 1
print("Sum = 1 + 2 + ··· + 10 = ",Sum)

# 输出:
# Sum = 1 + 2 + ··· + 10 = 55

四、流程控制的其他语句

pass 语句可以算作顺序语句,可以用在任何地方,是为了保持程序结构的完整性。break 、countinue 可以算作特殊的顺序语句,而且它们用的地方特别,需要与分支、循环语句合作使用。

1、pass 语句

pass 是 Python 中的一个占位符语句,用于保持代码结构的完整性。当需要在 if 条件中暂时不执行任何操作时,可以使用 pass 来避免语法错误。

示例如下:

# pass 语句

for i in "ABC":
    if i == 'B':
        pass
        print("这是pass块")
    print(i)

# 输出:
# A
# 这是pass块
# B
# C

2、break 语句

break 语句用在循环语句(迭代)中,结束当前的循环条件(迭代)跳转到循环语句的下一条。

break 语句常常与 if 语句联合,满足某条件使退出循环(迭代)。break 语句示例如下:

# break 语句

i = 10
while i > 0:
    print("当前的变量值:",i)
    i = i - 1
    if i == 5:		# i 等于 5,终止循环
        break
    print("end!")

# 输出:
# 当前的变量值: 10
# end!
# 当前的变量值: 9
# end!
# 当前的变量值: 8
# end!
# 当前的变量值: 7
# end!
# 当前的变量值: 6

image-20251211110815315

3、continue 语句

continue 语句用在循环语句(迭代)中,忽略循环体内 continue 语句后面的语句,回到下一次循环(迭代)。

示例如下:

# continue 语句

l = ['a', 'b', 'c', 'd', 'e']
for i in l:
   if i == 'c':
       continue # 跳过当前循环,直接进入下一次循环
   print(i)

# 输出:
# a
# b
# d
# e

示例如下:

# 结果有点抽象
# 如果没咋看懂,就把自己当成计算机,按步骤在脑子里执行一遍就懂了

for i in range(1,5):  # 1,2,3,4
    print(i)
    if(i % 3):			# 取模,非零为真
        print("* ")
    else:
        continue
    print("% ")
print("end!")

# 输出:
# 1
# * 
# %
# 2
# *
# %
# 3
# 4
# *
# %
# end!

用 continue 语句输出1~10 之间的所有奇数:

for i in range(1,11):
    if i % 2 == 0:
        continue
    else:
        print(i)
        
# 输出:
# 1
# 3
# 5
# 7
# 9

给个综合题,输出乘法表:

# 代码如下:

for j in range(1,10):                           # 循环变量 j 从1循环到9                    
    for k in range(1,j+1):                      # 循环变量 k 从1循环到j+1
        print(k,"*",j,"=",j*k," ",end = "")     # 输出乘法表达式
    print("")                                   # 输出空字符,用来换行

# 输出:
# 1 * 1 = 1  
# 1 * 2 = 2  2 * 2 = 4  
# 1 * 3 = 3  2 * 3 = 6  3 * 3 = 9
# 1 * 4 = 4  2 * 4 = 8  3 * 4 = 12  4 * 4 = 16
# 1 * 5 = 5  2 * 5 = 10  3 * 5 = 15  4 * 5 = 20  5 * 5 = 25
# 1 * 6 = 6  2 * 6 = 12  3 * 6 = 18  4 * 6 = 24  5 * 6 = 30  6 * 6 = 36
# 1 * 7 = 7  2 * 7 = 14  3 * 7 = 21  4 * 7 = 28  5 * 7 = 35  6 * 7 = 42  7 * 7 = 49
# 1 * 8 = 8  2 * 8 = 16  3 * 8 = 24  4 * 8 = 32  5 * 8 = 40  6 * 8 = 48  7 * 8 = 56  8 * 8 = 64
# 1 * 9 = 9  2 * 9 = 18  3 * 9 = 27  4 * 9 = 36  5 * 9 = 45  6 * 9 = 54  7 * 9 = 63  8 * 9 = 72  9 * 9 = 81

image-20251211113927771

看不懂,加个断点调试下就懂了

  • j 控制的是行,j = 1 就是第一行,以此类推

  • k 控制的是每行的变动的值,观察输出的每行数据,j 没有发生改变, k 每次加1

  • 按照特定的格式输出就行

写在最后

优快云 每天只能上传 2 篇文章,这是今天在优快云的最后一篇文章了。

这种简单的博客,每篇大约花费2小时时间,不过比看视频的效率高(就我而言)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值