前言:写到这里也许自己真的有些疲惫了,但是人生不就是像西西弗斯推石上山一样的枯燥乏味吗?
在python当中的流程控制主要包含以下两部分的内容:
-
条件判断
-
循环
1 条件判断
条件判断用if语句实现,if语句的几种格式:
-
if...
表示满足条件,则执行相应的操作,否则什么都不执行; -
if...else...
表示如果满足条件则执行if后面的操作,否则执行else后面的操作; -
if...elif...elif...else...
表示多条件判断,如果满足第一个条件就执行第一个操作,如果满足第二个条件就执行第二个操作,...,如果都不满足就执行else后面的操作。
注意:if可以独立存在,但else必须跟if配对,else是跟它前面最近的同级的if配对。
Python中的代码缩进:在python中相同缩进的代码属于同级,一般上下级之间缩进4个空格(按1次Tab)
1.1 if...
作用:如果if后面的布尔表达式值为True就执行if下的代码块,如果为False就不执行
格式:
if 布尔表达式:
代码块
举例:
#从键盘输入一个数字,如果大于10就输出“大于10”
num1=int(input("请输入一个数字:"))
if num1>10:
print("大于10")
#结合布尔值(为True则执行,为False则不打印
if 8:
print("你好")
if "不为空":
print("真的")
#结合成员运算符(in、not)-满足条件执行print,不满足则不执行
str1 = "adgcgag"
if "ad" in str1:
print("在里面")
1.2 if...else...
作用:如果if后面的布尔表达式值为True就执行if下的代码块,如果为False就执行else下的代码块。
格式:
if 布尔表达式:
代码块
#从键盘输入一个数字,如果大于10就输出“大于10”,如果不大于10就输出“不大于10”
num1=int(input("请输入一个数字:"))
if num1>10:
print("大于10")
else:
print("不大于10")
#从键盘输入一个整数,如果整数是奇数,就打印奇数,如果不是奇数,就打印偶数
third=int(input("请输入一个整数:"))
if third%2==1:
print("奇数")
else:
print("偶数")
#注意if和else是同级的,应该对齐。
1.3 if...elif...elif...else...
作用:从第一个条件开始逐一判断,遇到第一个满足的条件就执行它下面的语句,并结束判断不再往下判断。
格式:
if 布尔表达式:
代码块
elif 布尔表达式:
代码块
...
else:
代码块
举例:
#从键盘输入一个数字,如果大于10就输出“大于10”,如果小于10就输出“小于10”,否则输出等于10
num1=int(input("请输入一个数字:"))
if num1>10:
print("大于10")
elif num1<10:
print("小于10")
else:
print("等于10")
#举例:当遇到某个条件满足时就不会再往下判断
forth=int(input("请输入一个整数:"))
if forth<10:
print("小于10")
elif forth>=10:
print("大于10")
elif forth>=20:
print("大于20")
else:
print("其它")
2 循环
-
while循环
-
for循环
2.1 while循环
while循环:当满足循环条件时就执行循环体里的代码,直到循环条件不满足为止。中括号表示else是可选的,如果有else,那么else后面的代码会在循环正常结束后执行。使用while循环一定要有修改循环条件的语句,否则会造成死循环(在某条件下,一直执行语句,直到条件为False)。
格式:
while 布尔表达式:
循环体
[else:
语句块]
举例:
# 不带else语句
i=1 #给个初始值
while i<=10: #1.条件限制
print(i)
i+=1 #2.条件,递增
#两个条件要结合,如果不限制,会导致死循环
#带else语句
i=1
while i<=10: #1.条件限制
print(i)
i+=1 #2.条件,递增
else:
print("打印完毕")
#实现1+2+3+...+100,并输出计算结果
num1=0
i=1
while i<=100:
num1+=i
i+=1
else:
print(num1)
#思考:1*2*3*...*100 ?
-
当布尔表达的值为True的时候,就执行循环体的代码,直到布尔表达的值为False的时候或者被break;
-
else
语句是可选的,如果有else语句,当循环正常结束(不是被break语句结束的情况)后会执行else后面的语句,如果循环是被break掉,就不会执行else后面的操作。
2.2 for循环
迭代(Iteration):指重复执行某个操作,迭代最常用的表现就是遍历,经常用for循环来遍历可迭代对象(Iterable
),常见的可迭代对象包括字符串、列表、元组、集合和字典等。
结构:
for 变量名 in 可迭代对象:
循环体
[else:
语句块]
举例:
#1.将字符串"helloworld"遍历出来添加到列表list1中
list1=[]
for i in "helloworld":
list1.append(i)
print(list1)
#2.遍历元组中的元素
tuple1 = (1,3,5,6,7)
for i in tuple1:
print(i)
else:
print("遍历完成")
#3.用for循环遍历字典
dict1={"姓名":"张三","性别":"男","年龄":20}
#遍历字典,默认取到的是字典的key
for i in dict1:
print(i)
#遍历字典的key
for i in dict1.keys():
print(i)
#遍历字典的value
for i in dict1.values():
print(i)
#遍历字典的键值对
for i,j in dict1.items():
if i=="年龄":
print(i,j)
while循环和for循环的区别:while循环执行前,循环次数是不确定的;for循环在循环前执行次数是已经确定的。
2.3 循环的嵌套
2.3.1 while中套while循环
举例:
# 在10中找两个数i和j,满足条件j <= (i / j)时,如果i能除尽j则打印“能除尽”并打印i和j的值,如果不满足则打印“不满足条件”并打印不满足条件的i和j的值
i = 2
while (i < 10):
j = 2
while (j <= (i / j)):
if not (i % j):
print("能除尽",i,j)
j = j + 1
else:
print("不满足条件",i,j)
i = i + 1
print("算完")
2.3.2 for循环中套for循环
举例:
# 九九乘法表
for i in range(1,10): # 依次取数1到9
for j in range(1,i+1): # 根据i的取值来取值,i取1时,j的范围也是1
print("{} x {} = {}\t".format(j,i,i*j),end="") # 根据上面两个循环取出的书打印格式化数据。
print()# 把一次循环的数据打印完成后换行
除此之外,还可以在while循环中嵌套for循环,以及在for循环中嵌套while循环。
2.3.3 冒泡排序
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。
arr = [64, 34, 25, 12, 22, 11, 90]
# 遍历所有数组元素
for i in range(len(arr)-1):
for j in range(0, len(arr) - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
else:
print(arr)
2.4 循环中的continue/break/pass语句
-
continue
-
break
-
pass
2.4.1 continue
语句
作用:continue的作用是结束本次循环(在某一次循环中遇到continue语句时,直接结束本次循环,不执行continue后面的代码,而开始执行下一次循环)。
举例:
# 在0到10的数字中打印所有奇数,不是奇数的就不打印出来
a = 0
while a < 10:
a += 1
if a%2 ==0:
continue # 跳过本次循环,进入下一次循环
print("奇数",a)
else:
print("没有奇数了")
#3、输出0到100之间被3整除的整数,如果这个数能被5整除则不输出
for i in range(101):
if i%3==0:
if i%5==0:
continue
print(i)
2.4.2 break
语句
作用:是结束本层循环,可以跳出for和while的循环体(所有循环),任何对应的循环else块将不执行。
举例:
# 整数0到10中,取能被2整除的数,取到第一个数就结束循环,不执行后面的代码
a = 0
while a < 10:
a += 1
if a%2 ==0:
break # 满足上面条件了,直接结束本层所有循环,不执行后面的语句
print("奇数",a)
else:
print("没有奇数了")
2.4.3 pass
语句
作用:是空语句,是为了保持程序结构的完整性。不做任何事情,一般用做占位语句
举例:
# 输出 Python 的每个字母
for str1 in 'Python':
if str1 == 'h':
pass # 占位,不做任何操作
print(str1)
思考:
求100以内的偶数
100以内的奇数
分别打印如下图形
图形1:
图形2:
图形3:
图形4:
# 每层不同的*数量,依次递增(差一) for a in range(6): print("*"*a) # 每层不同,递增差二 #1.方法1 for b in range(1,8,2): print("*"*b) #2.方法二 b = 5 for b in range(1,b+1): print("*"*(2*b-1)) # 金字塔 cengshu = 7 for b in range(1,cengshu+1): print(" "*(cengshu-b),"*"*(2*b-1)) # 金字塔,中间为空 for i in range(6): #循环6次打印6行 for j in range(5-i): #打印空格每次循环递减 print(' ',end='') for q in range(2*i+1): #打印星星 if q==0 or q==2*i: #判断打印星星位置,在开头,结尾和最后一行打印星星 print('*',end='') else: print(' ',end='') print() #每行循环结束后换行