python基础知识-分支和循环
1.流程控制:通过代码控制代码执行的顺序
1.1.三种程序执行的方式
(1)顺序结构:代码从上往下按顺序依次执行,每条语句只执行一次(默认)
(2)分支结构:执行代码的时候根据条件选择执行或者不执行某些代码(if)
**a.**单分支结构 -如果XX就XX(满足某个条件才执行某个操作,不满足就不执行)
1)语法:
if 条件语句:
代码块
2)说明:
--条件语句对应的代码必须是一个有结果的表达式;
--关键字if为固定写法;
--冒号(:)也是固定写法(必须是英文输入法下面的冒号);
--结构上,代码块就是和if保持同一个缩进的一条或多条语句,至少一条;
3)执行过程:先判断条件语句语句是否成立,如果成立就执行代码块,否则代码块就不会执行
案例:
score = int(input("请输入分数:"))
if (score > 80):
print("通过")
#结果
请输入分数:81
通过
#水仙花数:一个三位数,各位数的立方和等于它本身
number = int(input("请输入:"))
ge=number%10
shi=number//10%10
bai=number//100
flower=ge**3+shi**3+bai**3
if(number==flower):
print("这个数是水仙花数")
#结果
请输入:153
这个数是水仙花数
b.双分支结构 --如果XX否则就XX(满足条件就执行某个操作,不满足条件就执行另一个操作)
1)语法:
if 条件语句:
代码块1(满足条件执行)
else:
代码块2(不满足条件执行)
案例:
age = int(input("请输入年龄:"))
if (age >= 18):
print("成年")
else:
print("未成年")
member = int(input("请输入:"))
if member > 10:
member -= 5
print(f"member的值{member}")
else:
member += 5
print(f"member的值{member}")
#结果
请输入年龄:13
未成年
请输入:10
member的值15
c.多分枝结构 —如果XX就XX,如果XX就XX,如果XX就XX…(根据不同的场景实现不同的功能)
1)语法:
方法1(如果一个条件成立。其他条件也成立):
if 条件语句1:
代码语句1
if 条件语句2:
代码语句2
if 条件语句3:
代码语句3
方法2(如果其中一个条件成立,其他条件绝不会成立):
if 条件语句1:
代码语句1
elif 条件语句2:
代码语句2
elif 条件语句3:
代码语句3
案例:
score = int(input("请输入分数:"))
if score == 100:
print("真棒!!给你买车")
elif 90 <= score < 100:
print("不错哦!!给你买鞋")
elif 80 <= score < 90:
print("还行!请你吃火锅")
else:
print("给你一顿")
num = int(input("请输入数字:"))
if num % 2 == 0:
print(f"{num}是偶数")
elif num % 2 != 0:
if num % 5 == 0:
print(f"{num}是能被5整除的奇数")
else:
print(f"{num}是奇数")
#结果
请输入:10
给你一顿
请输入数字:666
666是偶数
(3)循环结构:让代码重复执行–代码只写一次,重复执行多次(for,while)
a.for循环
1)语法:for 变量 in 序列:
循环体
2)说明:
-for --关键字:固定语法
-变量 ----变量名
-in ----关键字
-序列 —容器型数据类型(可以存放多个值)的数据就是序列
常见的容器型数据:字符串(“”),列表([]),元组(()),集合({}),字典({“”:xxx} 注意字典分为键和值,键需要用引号引起来,非数值型的值需要引号)
- 循环体 -结构上就是和for保持一个缩进的一条或者多条语句,至少一条;逻辑上,需要重复执行的代码
3)执行过程:
让变量去序列中取值,一个一个的取,取完为止,每取一个就执行循环体,循环次数由序列中的元素的个数来决定。
for i in [0,1,2,3,4]:
print(i,"hello world!!!")
#结果
0 hello world!!!
1 hello world!!!
2 hello world!!!
3 hello world!!!
4 hello world!!!
在 python 中,for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行(for 循环中的 else
关键字指定循环结束时要执行的代码块)。
for num in range(10,20): # 迭代 10 到 20 之间的数字
for i in range(2,num): # 根据因子迭代
if num%i == 0: # 确定第一个因子
j=num/i # 计算第二个因子
print ('%d 等于 %d * %d' % (num,i,j))
break # 跳出当前循环
else: # 循环的 else 部分
print ('%d 是一个质数' % num)
b.while循环
在给定的判断条件为 true 时执行循环体,否则退出循环体
(1)语法:
while 判断条件(condition):
循环体
循环体可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true,在 python 中,while … else 在循环条件为 false 时执行 else 语句块。
控制语句 | 描述 |
---|---|
break 语句 | 在语句块执行过程中终止循环,并且跳出整个循环 |
continue 语句 | 在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。 |
else 语句 | else是循环体的一部分,是为了保持程序结构的完整性。 |
注意:break和continue只能在循环体中使用。
**(2)执行过程:**先判断条件是否成立,成立就执行循环体,执行完循环体子啊此判断条件是否成立,成立就再次执行循环,不成立就退出循环。
案例:
x = 0
while x < 5:
print("hello world")
x += 1
*1)*break语句用来终止整个循环语句(整个循环直接结束,不再进行下一次循环),即使循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。
for letter in 'Python': # 第一个实例
if letter == 'h':
break
print ('当前字母 :', letter)
#结果
当前字母 : P
当前字母 : y
当前字母 : t
-
break的应用 --当while遇到break
while True:
需要重复执行的操作
if 循环结束的条件:
break
案例:
-
# 猜数游戏(系统随机生成一个整数,与你输入的数作比较) # 猜数游戏 from random import randint#导入随机模数模块 a = randint(0, 100) count = 3 while 0 < count < 4:#控制次数 num = int(input("请输入数字:")) count -= 1 if num > a: print("大了,你还有{}次机会".format(count)) elif num < a: print("小了,你还有{}次机会".format(count)) else: print("真棒,答对了!!!") break #结果 请输入数字:20 小了,你还有2次机会 请输入数字:50 小了,你还有1次机会 请输入数字:90 大了,你还有0次机会
2) continue 语句跳出本次循环,进入下一次循环*(换言之:continue 语句是一个删除的效果,他的存在是为了删除满足循环条件下的某些不需要的成分)*,而break跳出整个循环
案例:
for letter in 'Python': # 第一个实例
if letter == 'h':
continue
print ('当前字母 :', letter)
#结果
当前字母 : P
当前字母 : y
当前字母 : t
当前字母 : o
当前字母 : n
c. for和while的选择
遇到问题时优先考虑for循环,for循环解决不了的问题才使用while循环
for循环无法解决的问题:
1)死循环
2)循环次数不确定(循环的次数不由程序员确定,而是由使用程序的用户使用的行为决定)
案例:写程序提示用户输入密码,直到输入的密码和系统保存的密码相同为止
-
完整的循环
esle同样是for 和while循环体的部分,else的存在不影响原来的循环的执行
-
完整的for循环
for i in 序列:
循环体
else:
代码块
-
完整的while循环
while 条件语句:
代码块
else:
代码块
注意:
(1)如果前面的循环是正常结束(for把数据取完了导致循环结束;while循环的条件不成立导致循环结束的),else后面的代码会在循环结束后执行。
(2) 如果前面的循环是因为break而结束的,循环结束时不会执行else后面的代码。
-
1.2 range函数 —>创建等差数列
(1)range(N) 创建[0,N)–[]表示可以取到,()表示取不到,差是1
例如:range(5)—0,1,2,3,4
for i in range(5):
print("hello world")
#结果
hello world
hello world
hello world
hello world
hello world
(2)range(M,N) 创建M到N的等差数列
例如:range(5,10) 5,6,7,8,9
(3)range(M,N,step) step为步长,即每隔多少取一个
range(5,20,3) 5,8,11,14,17,20
注意:step可以为负
例如:range(5,10,-2) 10,8,6