Python程序控制

Python程序设计基础——目录

  第一部分——基础篇

    一、Python程序控制


一、程序结构

流程控制是编程语言中极其重要的一部分,它提供了控制程序执行的方法。

在计算机程序设计中,有 3 3 3 种基本程序结构:顺序结构选择结构 以及 循环结构。因此,对应有三种语句:顺序执行语句、选择执行语句以及循环执行语句。
在这里插入图片描述

说明

  • 顺序结构要求编写的语句按照编写顺序依次被执行;
  • 选择结构要求根据条件语句的结果选择执行不同的语句;
  • 循环结构要求根据循环条件循环执行某一段程序。其中,被反复执行的语句称为循环体

二、选择语句

选择语句,又称为条件语句,按照条件选择执不同的代码片段。

Python中,选择语句主要有 3 3 3 种形式:if语句、if...else语句、if...elif...else多分支语句。

注意

在C、C++、Java等高级程序语言中,选择语句还包括 switch语句,也可以实现多重选择。

但是,Python中没有 switch语句,因此在实现多重选择的功能时,只能使用if...elif...else 多分支语句或if语句的嵌套。

2.1 if语句

if语句是最简单、最基本的选择语句,语法形式如下:

if expression:
    statement block 1

其中,expression 可以是简单的的布尔值或布尔型变量,也可以是关系表达式或逻辑表达式。

expression 为真,则执行 statement block 1,否则,跳过执行。

注意:在python中,仍有“非零即真”的规范。

示例:非零即真。

x = 52
if x:	# 非零即真!
    print("Hello world!") 
Hello world!

注意:使用 if语句,若语句块中只有一条语句,可以将语句块直接写到冒号 : 的右侧。
但是,为了程序代码的可读性,不建议这么做!

示例if语句的简写形式。


x = 52
if x:print("Hello world!")
Hello world!

2.2 if…else语句

if...else语句可用于二选一的情形。语法形式如下:

if expression:
    statement block 1
else:
    statement block 2

其中,expression 可以是简单的的布尔值或布尔型变量,也可以是关系表达式或逻辑表达式。

expression 为真,则执行 statement block 1,否则,执行statement block 2

示例:判断最大值。

x = 50
max_value = 70
if x > max_value:
    max_value = x
else:
    max_value = max_value
print("The max value is " + str(max_value))
The max value is 70

在一些特殊情形中,if...else语句可以进行一定的简化。

示例:判断最大值(简化形式)。

x = 50
max_value = 70
max_value = x if x > max_value else max_value
print("The max value is " + str(max_value))
The max value is 70

如果出现选择语句的嵌套形式,else语句会根据缩进确定对应的 if语句。

示例:判断三个数中的最大值。

a = 30
b = 60 
c = 50
if a > b:
    if b > c:
        max_value = a
    else:
        if a > c:
            max_value = a
        else:
            max_value = c
else:
    if a > c:
        max_value = b
    else:
        if b > c:
            max_value = b
        else:
            max_value = c
print("The max value is " + str(max_value))
The max value is 60

2.3 if…elif…else语句

if...elif...else语句适合多选择分支的情况。语法形式如下:

if expression 1:
    statemant block 1
elif expression 2:
    statement block 2
elif expression 3:
    statement block 3
...
else:					# 可以不需要!
    statement block n

其中,expression k () k = 1 , 2 , ⋯   , n k=1,2,\cdots,n k=1,2,,n )可以是简单的的布尔值或布尔型变量,也可以是关系表达式或逻辑表达式。

expression 为真,则执行 statement block 1,否则,执行下一个elif的判断,只有在所有表达式都为假时,才执行 else 中的语句。

注意

  • if语句与 elif语句都需要判断表达式的真假,而else则不需要判断。

  • elif语句与else语句都必须跟if语句一起使用,不能单独使用。

示例:身体质量指数BMI。

# 身体质量指数BMI
height = float(input("请输入身高:")) # 输入:1.72
weight = float(input("请输入体重:")) # 输入:70
BMI = weight/(height*height)
if BMI < 18.5:
    print("偏瘦!")
elif BMI > 18.5 and BMI < 24:
    print("正常!")
elif BMI > 24 and BMI < 28:
    print("偏胖!")
elif BMI >= 28:
    print("肥胖!") 
正常!

2.4 选择语句的嵌套

if语句、if...else语句以及 if...elif...else语句可以相互嵌套,形成更复杂的选择结构。

注意:可以根据程序开发的需要,选择任意合适的嵌套方式,但一定要注意嵌套时代码块的缩进量。

示例:判断闰年。

# 判断闰年,“四年一闰,百年不闰,四百年一闰”
year = int(input("输入年份:")) # 输入 2021
if year % 4 == 0:
    if year % 100 == 0:
        if year % 400 == 0:
            print(year,"年是闰年!")
        else:
            print(year,"年不是闰年!")
    else:
        print(year,"年是闰年!")
else:
    print(year,"年不是闰年!") 
2021 年不是闰年!

三、循环语句

循环语句要求在给定条件下,反复执行某个语句块,直到条件不满足为止。

给定的条件称为循环条件,反复执行的代码块称为循环体

循环主要有两种形式:

  • 重复一定次数的循环,称为计次循环,如 for循环。
  • 一直重复,直到条件不满足的循环,称为条件循环,如while循环。

注意:在C、C++、Java等高级程序语言中,条件循环还包括 do...while循环,但Python不具有该功能。

3.1 for循环

3.1.1 for循环基础

不同于C、C++、Java等高级程序语言通过循环控制变量来控制循环,Python的for循环语句通过循环遍历某一个序列来构建循环,循环结束的条件就是遍历完序列。

for iterating_variable in sequence:
    statement block

其中,所遍历的序列对象通常是列表、元组和字典等。

示例:遍历列表。

subjects = ['数学分析','高等代数','常微分方程','实变函数与泛函分析']
print("主要课程有:")
for i in subjects:
    print('课程:',i)
主要课程有:
课程: 数学分析
课程: 高等代数
课程: 常微分方程
课程: 实变函数与泛函分析

示例:遍历字符串。

# 遍历字符串
string = 'python'
for char in string:
    print(char)
p
y
t
h
o
n

3.1.2 序列索引迭代

# 输出斐波那契数列的前 n 项
first = 0
last = 1
number = 10
print(first)
print(last)
for i in range(number - 2):
    first,last = last,first + last
    print(last)
0
1
1
2
3
5
8
13
21
34

注意:Python内置函数range(),语法形式如下:

range([start,] stop [,step])

其中:

  • start:可选参数,起始值,默认为 0 0 0
  • stop:终止值,range(n)将生成 0 , 1 , ⋯   , n − 1 0,1,\cdots,n-1 0,1,,n1的整数列表。
  • step:可选参数,表示步长。

3.1.3 for…else语句

for...else语句中的else部分会在for语句部分正常循环后执行。语法形式如下:

for iterating_variable in sequence:
    statement block 1
else:
    statement block 2  # 循环未被break终止,可执行else语句

注意:正常循环是指未经 break语句提前终止的情况。

示例:判断质数。

# 判断质数
number = 13
for i in range(2,number):
    if number % i == 0:
        print(number,"不是质数!")
        break
else:
    print(number,"是一个质数!")
13 是一个质数!

3.1.4 for循环语句的嵌套

python中的 for循环语句可以嵌套使用!

示例:打印九九乘法表。

# 打印九九乘法表
for i in range(1,10):
    for j in range(1,i+1):
        print(i,"*",j,"=",i*j,end=' ')
    print("\n")
1 * 1 = 1 

2 * 1 = 2 2 * 2 = 4 

3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 

4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16 

5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25 

6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36 

7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49 

8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64 

9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81 

3.2 while循环

3.2.1 while循环基础

while循环可基于循环条件,反复执行循环体。语法形式如下:

while circulating_conditions:
    circulating body

其中,当 circulating_conditions为真时,将执行 circulating body,当 circulating_conditions为假时,循环停止。

示例:计算前 n n n 个自然数的和。

# 计算自然数的前 n 项和
number = 5
iter = 0
sum = 0
while (iter <= number):
    sum += iter
    iter += 1

print("前",number,"项和为:",sum)
前 5 项和为: 15

3.2.2 while…else语句

for...else语句类似,当while循环结束后,执行else部分。语法形式如下:

while circulating_conditions:
    circulating body
else:
    statement block  # 循环未被break终止,可执行else语句

示例:计算自然数的前 n n n 项和。

# 计算自然数的前 n 项和
number = 5
iter = 0
sum = 0
while (iter <= number):
    sum += iter
    iter += 1
else:
    print("前",number,"项和为:",sum)
前 5 项和为: 15

3.2.3 while死循环

死循环,即无限循环。由于循环条件始终成立,程序一直执行循环体部分。

示例:死循环。

while True:
    number = input("请输入密码:")
    print("密码是:",number)
密码是: 124
密码是: 566
密码是: 678
密码是: 654
密码是: 345
密码是: 235
...

3.2.4 while循环语句的嵌套

python中的 while循环语句同样可以嵌套使用!

示例:打印九九乘法表。

# 打印九九乘法表
i = 1
while i <= 9:
    j = 1
    while j <= i:
        print(i,"*",j,"=",i*j,end=' ')
        j += 1
    print(end="\n")
    i += 1
1 * 1 = 1 
2 * 1 = 2 2 * 2 = 4 
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16 
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25 
6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36 
7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49 
8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64 
9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81 

四、break、continue与pass语句

在循环语句中,如果不想继续执行循环操作,可以使用跳转语句对程序进行跳转。

Python中有 2 2 2 种跳转语句:break语句以及continue

4.1 break语句

在Python程序中,break语句可终止当前循环。通常情况下,break语句会搭配if语句使用。语法形式如下:

# for循环:
for iterating_variable in sequence:
    statement block
    if expression:
        break
# while循环:
while circulating_conditions:
    circulating body
    if expression:
        break

示例:打印python。

for ch in 'python':
    if ch == 'o':
        break
    print(ch)
p
y
t
h
letter = 'python'
i = 0
while i <= len(letter):
    if letter[i] == 'o':
        break
    print(letter[i])
    i += 1
p
y
t
h

4.2 continue语句

不同于break语句终止当前循环,continue语句执行跳出当前循环操作。语法形式如下:

# for循环:
for iterating_variable in sequence:
    statement block
    if expression:
        continue
# while循环:
while circulating_conditions:
    circulating body
    if expression:
        continue

示例:打印python。

# for循环 break
for ch in 'python':
    if ch == 'o':
        continue
    print(ch)
p
y
t
h
letter = 'python'
i = 0
while i <= len(letter):
    if letter[i] == 'o':
        continue
    print(letter[i])
    i += 1
p
y
t
h

4.3 pass语句

pass语句是一个空语句,表示不做任何操作,为保持程序结构的完整性而起到占位作用。

示例:打印python。

# for循环 break
for ch in 'python':
    if ch == 'o':
        pass
        print("空语句,什么也不执行!")
    print(ch)
p
y
t
h
空语句,什么也不执行!
o
n

参考文献

[1] 明日科技编著. Python从入门到精通. 北京:清华大学出版社, 2018.10.
[2] 叶维忠编著. Python编程从入门到精通. 北京:人民邮电出版社, 2018.11.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值