目录
前言
前面我们学习了Python中的一些基本知识,本篇文章我们重点讲解Python中的分支控制程序以及循环
一、分支语句
Python中的分支语句总的就只有一种,就是if分支,但if分支会和elif 、else 组合连用,形成多种选择
标准条件分支语句 条件表达式值只有(真 、 假)
if 条件表达式1 : <缩进>语句块1 ....... .......
elif 条件表达式2 : <缩进>语句块2 ....... .......
elif 条件表达式3 : <缩进>语句块3 ....... .......
else : #在不满足以上所有条件时执行的语句块
<缩进>语句块
所以一般分为以下三种
1、单分支结构
只有一个选择结构,如果满足条件,就执行,不满足就跳过if 语句块,不执行
if 2>1:
print("2大于1")
2、双分子结构
有两个选择结构;如果满足条件,就执行if 语句块, 不满足 就执行else 语句块
num_1=int(input("输入第一个数:"))
num_2=int(input("输入第二个数:"))
if num_1>num_2:
print("num_1大于num_2")
else:
print("num_1<num_2")
3、多分支结构
有三种或者三种以上的选择;如果满足条件1,执行if 语句块1,不满足条件1 则判断条件2 ,满足 执行 语句块2,不满足条件2 则判断条件3 ,......满足某一个条件 则 只执行对应的语句块n
num_1=int(input("输入第一个数:"))
num_2=int(input("输入第二个数:"))
if num_1>num_2:
print("num_1大于num_2")
elif num_1==num_2:
print("num_1等于num_2")
else:
print("num_1<num_2")
4、分支语句的嵌套
当使用多个分支嵌套使用,就是我们在判断前面条件成立的情况下,再次对条件进行判断
num_1=int(input("输入第一个数:"))
num_2=int(input("输入第二个数:"))
if num_1>num_2:
print("num_1大于num_2")
elif num_1==num_2:
print("num_1等于num_2")
if num_1==0:
print("0是最小数")
else:
print("num_1<num_2")
二、循环
在程序中某些代码功能,可能需要多次重复执行,使用循环完成
在Python中,有两种方式实现循环:while和for
1、while循环
一直执行循环体语句,直到条件判断为 Flase ,结束整个while循环 在执行时,先判断条件,满足条件执行一次循环体,再次判断条件,
#输入一个数,如果输入的是0,结束,否则继续输入
a=0
while a < 6 : # 5次
num = input("请输入数据:")
if num == "0":
break #结束整个循环
print(num)
a += 1
如果在循环中,需要强制跳出循环,通过在循环中 执行 break
break在循环中,用于强制跳出循环(不再执行循环)。
如果在循环中,需要跳过本次循环剩下代码执行,直接进入下一次条件判断 ,通过在循环中 执行 continue
continue 在循环中,用于跳过本次循环循环体剩下的代码,进行下一次循环。
2、for循环
先引出一个可迭代对象的概念,对于for循环来说,必须要求拥有迭代对象,这样才能进行循环
可迭代对象:对象数据可以通过迭代器依次遍历整个对象
通过 调用 iter() 会尝试返回一个迭代器对象
对于for循环,其不同于C语言当中的for循环,Python中的for循环 通过调用 iter()拿到迭代对象的迭代器,不断的使用next()从迭代对象中获取值,直到迭代对象值被获取完为止 #每获取到一个值赋值到变量名变量中,进行一次循环(表示满足一次条件,执行一次循环语句)
这里说的迭代器其实就是一个有序的列表或者元组,或者是range()创建的一个有序的范围
当我们需要循环的时候通过调用 iter()拿到迭代对象的迭代器,不断的使用next()从迭代对象中获取值,比如下面这个代码
list_temp=[1,2,3,4,5,6,7]
for i in list_temp:
print(i)
list_temp是一个列表,有下标,并且下标从0开始,i作为一个变量,存储list_temp[0]这个值,
并且存储一次,就执行一次循环,下一次循环就存储list_temp[1]这个值,直到列表下标结束,即i的范围是从列表下标(0-6)依次取值,取值为1,2,3,4,5,6,7 在这个过程中,一共循环了7次
但是一般我们所使用的是range函数来控制循环次数
range()函数:创建一个数字迭代对象,创建某个范围内的数字的集合
range(起始值,结束值(不包含),步长)
起始值可以省略:默认为 0
步长可以省略:默认为 1
结束位置不可省略,并且打印范围是[ 起始值 ~(结束值-1)]
for i in range(1,5,1):#打印从1-4,步长为1
print(i)
输出
1
2
3
4
使用range()可以添加一个数字集合,通常用于for循环中
#金子塔*号
str_a=""
for i in range(6):
str_a += " " + "*"
print(str_a)
输出
*
* *
* * *
* * * *
* * * * *
* * * * * *
for循环还能进行多次嵌套使用
#打印一个金字塔
str_a = ""
for i in range(5):
for i in range(i+1):
str_a += "*"
print(str_a)
*
***
******
**********
***************
三、经典例题
1、打印水仙花数
#水仙花数,个位,十位,百位立方加起来等于这个数本身
for i in range(100,1000,1):
if (i%100//10)**3+(i%100%10)**3+(i//100)**3 == i :
print(i)
2、计算天数
#计算天数
year=int(input("请输入年份:"))
month=int(input("请输入月份:"))
days=int(input("请输入日期:"))
if (year%4==0 and year%100!=0) or year%400==0 :
print(f"{year}是闰年")
month_day=[31,29,31,30,31,30,31,31,30,31,30,31]
i=1
temp_days=0
while i<month:
temp_days += month_day[i]
i+=1
temp_days=temp_days+days
print(temp_days)
else:
print(f"{year}是平年")
month_day = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
i = 1
temp_days = 0
while i < month:
temp_days += month_day[i]
i += 1
temp_days=temp_days+days
print(temp_days)
输出
请输入年份:2023
请输入月份:7
请输入日期:24
2023是平年
205
总结
以上大概就是Python中的一些关于分支和循环的一些操作以及例题。