Python-分支和循环
分支结构
if
Python的分支结构由if 语句来操刀实现。
第1种:
是判断一个条件,如果这个条件成立,就执行其包含的某条语句或某个代码块。
语法结构如下:
if 条件:
某条语句或某个代码块
第2种:
是判断一个条件,跟第一种的区别是如果是条件不成立,则执行另外的某条语句或某个代码块。
if 条件:
某条语句或某个代码块
else:
某条语句或某个代码块
第3种:
是判断多个条件,如果第一个条件不成立,则继续判断第2个条件,如果第2个条件还不成立,则可以继续判断第3,4…个条件。
if 第1个条件:
某条语句或某个代码块
elif 第2个条件:
某条语句或某个代码块
elif 第3个条件:
某条语句或某个代码块
第4种:
是在第3种的情况下添加一个else,表示上面所有的条件均不成立的情况下,执行某条语法或代码块。
if 第1个条件:
某条语句或某个代码块
elif 第2个条件:
某条语句或某个代码块
elif 第3个条件:
某条语句或某个代码块
else:
某条语句或某个代码块
第5种:
1.条件表达式
相当于将一个完整的if-else结构整合成一个表达式来使用。(在实用性来讲前面几种比较易于理解,知道就好)
条件成立时执行的语句 if 条件 else 条件不成立时执行的语句
上课案例:
small = a if a < b else small = b
print (small)
score = 66
level = ('D' if 0 <= score < 60)else
'C' if 60 <= score < 80 else
'B' if 80 <= score < 90 else
'A' if 90 <= score < 100 else
'S' if score == 100 else
'请输入 0-100 之间的分值^o^')
2.分支结构的嵌套:
所谓嵌套,就是类似于下面小甲鱼案例中的代码:
>>> age = 18
>>> isMale = True
>>> if age < 18:
... print("抱歉,未满18岁禁止访问。")
else:
... if isMale:
... print("任君选购!")
... else:
... print("抱歉,本店商品可能不适合小公举哦~")
任君选购!
循环结构
能跟分支大佬平起平坐的也就是循环结构,分支结构能让你的程序根据条件去做不同的事情,而循环结构能让你的程序不断做同一件事情,这就是所谓的道不同而一样很牛逼!
Python 有两种循环语句: while 循环和for 循环。
while 循环
while 条件:
某条语句或某个代码块
只要条件一直成立,那么包含的某条语句或某个代码块就会一直被执行。
死循环
如果条件一直成立,那么循环体就一直被成立。
>>> while True:
... print("作为一段没有灵魂的代码,我的任务就是不断地干活!")
所谓死循环,就是打死也不会结束的循环。
break 语句
在循环体内,一旦遇到braek语句,Python 二话不说马上就会跳出循环体,即便这时候循环体内还有未执行的语句,Python 都会直接跳出。
continue 语句
实现跳出循环体的还有另外一个语句,那就是 continue 语句。
continue 语句也会跳出循环体,但是, 它只是跳出本一轮循环,它还会回到循环体的条件判断位置,然后继续下一轮的循环。(如果
条件还满足的话)。
注意 它和 break 语句两者的区别:
· continue 语句是跳出本次循环,回到循环的开头
· break 语句则是直接跳出循环体, 继续执行后面的语句。
else 语句
当你的循环的条件不再为真时,便执行 else 语句的内容。
i=1
while i < 5:
print('循环内,i的值是',i)
i += 1
else:
print('循环外,i的值是',i)
>>>
循环内,i 的值是 1
循环内,i 的值是 2
循环内,i 的值是 3
循环内,i 的值是 4
循环外,i 的值是 5
小技巧
while-else 可以非常容易地检测到循环的退出情况。
>>> day = 1
>>> while day <= 7:
... answer = input("今天有好好学习吗?")
... if answer != "有":
... break
... day += 1
... else:
... print("非常棒,你已经坚持了7天连续学习!")
>>>
今天有好好学习吗?有
今天有好好学习吗?有
今天有好好学习吗?有
今天有好好学习吗?有
今天有好好学习吗?有
今天有好好学习吗?有
今天有好好学习吗?有
非常棒,你已经坚持了7天连续学习!
嵌套
循环也能玩嵌套,而且玩得更六!
有时候,我们的需求可能要用到不止一层循环来实现。
比如我们要实现打印一个九九乘法表,就可以这么实现:
i = 1
while i <= 9:
j = 1
while j<= i:
print(j,'*',j*i,end=" ")
j +=1
print()
i += 1
# 九九乘法表的打印
>>>
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
注意:
无论是break语句还是continue语句,它们只能作用于一层循环体。
for 循环
语法结构如下:
for 变量 in 可迭代对象:
某条语句或某个代码块
什么是可迭代对象?
所谓可迭代对象,就是指那些元素能够被单独提取出来的对象。 比如我们学过的字符串,它就是一个迭代对象。
什么叫迭代呢?
比如如说每一次从字符串“FishC"里面拿一个字符出来,那么你依次会拿出’F‘、’i’、‘s’、’h’、‘C’ 五个字符,这个过程我们称之为迭代。
1.range()
range(stop) 会帮你生成一个从0开始, 到stop(不包含)的整数数列。
range(start, stop) - 将生成一个从 start 开始, 到 stop (不包含)的整数数列
range(srart,stop,step) - 将生成一个从 start 开始, 到 stop (不包含) 结束,步进跨度为 step的整数数列
2. for 循环 和 while 循环的共通性
for 循环和 while 循环一样, 都是可以支持嵌套的, 同样它也可以搭配 break 和 continue 语句。
>>> for n in range(2, 10):
... for x in range(2, n):
... if n % x == 0:
... print(n, "=", x, "*", n // x)
... break
... else:
... print(n, "是一个素数")
...
2 是一个素数
3 是一个素数
4 = 2 * 2
5 是一个素数
6 = 2 * 3
7 是一个素数
8 = 2 * 4
9 = 3 * 3