Python基础之控制结构
Python中控制结构分为分支结构与循环结构。
1.分支结构
(1) if 结构
适用于只有一种选择的时候
语法结构
if 条件 :
代码操作
例:
# 定义一个变量,存储一个数据,判断该数据是否为偶数,如果是则输出该变量
num = int(input("输入整数:"))
if num & 1 == 0:
print("num =", num)
# 定义一个变量,存储一个数据,判断该数据是否在区间[3,6]中,如果在则输出该变量
num = int(input("输入整数:"))
if 3 <= num <= 6:
print("num =", num)
"""
注意:在Python中,通过代码之间的缩进来表示程序的层级关系,因此在代码书写时,必须严格按照缩进执行代码
pass Python内置关键字,代表空语句,一般用来充当程序的结构
"""
(2) if-else结构
该分支结构用于两种选择情况
语法结构
if 条件:
执行语句
else:
执行语句
# 注意:else是对if条件的否定,即当if条件不成立时执行
例:
# 用户通过控制台输入数字A、B,请输出A占B的百分比
A = int(input("输入整数A:"))
B = int(input("输入整数B:"))
if A <= B:
print("A占B的%.2f%%" % (A/B*100))
else:
# print("输入错误:要求A不大于B!")
raise ValueError("输入错误:要求A不大于B!")
# raise 抛出异常
# 定义三个变量,存储三个整数,求三个整数的中间值
A = int(input("输入整数A:"))
B = int(input("输入整数B:"))
C = int(input("输入整数C:"))
if (A >= B >= C) or (C >= B >= A):
print("中间值B=%d" % B)
else:
if (A >= C >= B) or (B >= C >= A):
print("中间值C=%d" % C)
else:
print("中间值A=%d" % A)
# 在开发中,很多时候需要使用if-else 的嵌套操作
(3)if-elif-else结构
用于计算机需要从多于两个的条件结果中做出选择
语法结构
if 条件1:
执行语句1
elif 条件2:
执行语句2
elif ...:
执行语句...
else
执行语句n
例:
# 输入月份,判断该月份属于哪个季节
month = int(input("输入月份:"))
if 3 <= month <= 5:
print("%d月是春天" % month)
elif 6 <= month <= 8:
print("%d月是夏天" % month)
elif 9 <= month <= 11:
print("%d月是秋天" % month)
elif month == 12 or 1 <= month <= 2:
print("%d月是冬天" % month)
else:
print("输入不合法")
注意:Python注重精简,所以不支持Switch操作!!!同时也不支持do-while循环!!!
2.循环结构
循环:程序对某一段相同代码执行连续不停的重复执行(两次执行)多次操作
Python中的循环分为while循环和for循环,其中for循环成为了迭代操作
迭代:从一个可迭代容器中重复不停的取值运算
###(1) range()方法
range():Python内置操作,用来生成指定范围的一串连续数字
注意:range()最终返回的是一个可以迭代的容器
range(num):此过程生成一个区间为[0,num)的一串连续数字
range(num1,num2):此过程生成一个区间为[num1,num)的一串连续数字
range(num1,num2,step):生成从[num1,num2)的间隔为step的一串连续数字
例:
nums = range(10)
print(list(nums))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
nums = range(2, 10)
print(list(nums))
# [2, 3, 4, 5, 6, 7, 8, 9]
nums = range(2, 10, 3)
print(list(nums))
# [2, 5, 8]
###(2)for循环结构
仅适用于有限循环
语法结构
for variable in Iterator:
循环体
variable:变量,用来存储每一次迭代所取出的数据
Iterator:迭代对象,用来存储数据的迭代容器
循环体:每一次迭代之后需要做的具体操作
例:
# 求[1-100]所有数的阶乘
for item in range(1, 101):
mul = 1
for i in range(1, (item+1)):
mul *= i
print("!%d=%d" % (item, mul))
# 求[1-100]第一个7的倍数
for item in range(1,101):
if item % 7 == 0:
print(item)
break
else:
print("循环正常结束")
# 求两个数的最大公约数
num1 = int(input("num1="))
num2 = int(input("num2="))
if num1 > num2:
for item in range(num2, 0, -1):
if num1 % item == 0 and num2 % item == 0:
print("最大公约数为", item)
break
else:
for item in range(num1, 0, -1):
if num1 % item == 0 and num2 % item == 0:
print("最大公约数为", item)
break
"""
break:强制结束break所在的循环,即使该层循环后面还有需要执行的循环,该层循环也不再执行
else:for循环,while循环可以和else绑定,else中的代码会在循环正常结束之后执行。如果循环在执行过程中被break意外中断,则else中的代码不再执行
"""
(3)while循环结构
适用于有限循环及无限循环
语法格式
while 循环条件:
循环体
while循环执行原理:首先程序会判断循环条件是否成立,如果成立则执行循环体,当循环体执行完毕,程序会自动跳转到条件判断,如果条件判断成立,则继续执行下一次循环,否则while循环结束
continue:结束本次循环,当程序执行过程中遇到continue关键字,则本次循环结束,程序直接跳转到条件判断
break:结束本层循环,当程序执行过程中遇到break关键字,此时break所在的循环会被强制终止
例:
# 死循环
index = 1
while index <= 10:
if index == 5:
# index += 1
continue
print(index)
index += 1
# 有一个正整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,问该数(需手动分析)
for i in range(2, 85, 2):
if 168 % i == 0:
j = 168 // i
if i > j and j & 1 == 0:
n = (i - j) // 2
x = n ** 2 - 100
if x > 0:
print(x)
i = 2
while i <= 84:
if 168 % i == 0:
j = 168 // i
if i > j and j & 1 == 0:
n = (i - j) // 2
x = n ** 2 - 100
if x > 0:
print(x)
i += 2
(4)循环嵌套
循环嵌套:在for或while循环的循环体中存在另一个for循环或while循环,构成嵌套关系的现象。开发中常用的是双重for循环。
例:
# 空心菱形
row = int(input("输入数字:"))
for x in range(-row, row +1):
string = ""
for y in range(-row, row +1):
if abs(x)+abs(y) == row:
string += "*"
else:
string += " "
print(string)
# *
# * *
# * *
# * *
# * *
# * *
# *
# 不完美,如果有更好的方法请告诉我