python小白成长笔记(四)流程控制
每天分享一篇笔记和整理,对python感兴趣的小伙伴多多关注哦,希望大家一起学习
今天的内容是python中的判断语句,简单来书就是达到一定的条件,之后去执行你要求的任务
5. 流程控制
5.1 流程控制之if…else
假如把写程序比做走路,那我们到现在走的都是直路,如果遇到了十字路口,我们必须决定下一步该怎么走。我们要判断哪个方向才是要走的路,同理,我们想让程序也能进行判断,只需要在程序里预设一些条件判断语句,满足哪个条件,就走哪条岔路。这个过程就叫流程控制。
- 基本上在各个语言中,都是用语法if…else…来实现,可分为单分支、双分支、多分支
单分支
if 条件:
满足条件后要执行的代码
双分支
if 条件:
满足条件执行代码
else:
if条件不满足就走这段
缩进
你会发现,上面的if代码里,每个条件的下一行都缩进了4个空格,这是为什么呢?这就是Python的一大特色,强制缩进,目的是为了让程序知道,每段代码依赖哪个条件,如果不通过缩进来区分,程序怎么会知道,当你的条件成立后,去执行哪些代码呢?
在其它的语言里,大多通过{}
来确定代码块,比如C,C++,Java,Javascript都是这样,看一个JavaScript代码的例子
var age = 56
if ( age < 50){
console.log("还能折腾")
console.log('可以执行多行代码')
}else{
console.log('太老了')
}
在有{}
来区分代码块的情况下,缩进的作用就只剩下让代码变的整洁了。
Python是门超级简洁的语言,发明者定是觉得用{}
太丑了,所以索性直接不用它,那怎么能区分代码块呢?答案就是强制缩进。
Python的缩进有以下几个原则:
- *代码必须顶行写,即如果一行代码本身不依赖于任何条件,那它必须不能进行任何缩进
- 同一级别的代码,缩进必须一致
- 官方建议缩进用4个空格,当然你也可以用2个,如果你想被人笑话的话。
多分支
回到流程控制上来,if…else …
可以有多个分支条件
if 条件:
满足条件执行代码
elif 条件:
上面的条件不满足就走这个
elif 条件:
上面的条件不满足就走这个
elif 条件:
上面的条件不满足就走这个
else:
上面所有的条件不满足就走这段
下面进行一个小案例
- 猜年龄的游戏
age_of_oldboy = 48
guess = int(input(">>:"))
if guess > age_of_oldboy :
print("猜的太大了,往小里试试...")
elif guess < age_of_oldboy :
print("猜的太小了,往大里试试...")
else:
print("恭喜你,猜对了...")
上面的例子,根据你输入的值不同,会最多得到3种不同的结果
再来个匹配成绩的小程序吧,成绩有ABCDE5个等级,与分数的对应关系如下
A 90-100
B 80-89
C 60-79
D 40-59
E 0-39
要求用户输入0-100的数字后,你能正确打印他的对应成绩
score = int(input("输入分数:"))
if score > 100:
print("我擦,最高分才100...")
elif score >= 90:
print("A")
elif score >= 80:
print("B")
elif score >= 60:
print("C")
elif score >= 40:
print("D")
else:
print("太笨了...E")
这里有个问题,就是当我输入95的时候 ,它打印的结果是A,但是95 明明也大于第二个条件elif score >=80:
呀, 为什么不打印B呢?这是因为代码是从上到下依次判断,只要满足一个,就不会再往下走啦,这一点一定要清楚
5.2 流程控制之while循环
我们已经学会用if … else 来猜年龄的游戏啦,但是只能猜一次就中的机率太小了,如果我想给玩家3次机会呢?这个怎么弄呢?当然最笨的方式是把代码赋值三次。。。。
例如
age_of_oldboy = 48 #要猜对的年龄
guess = int(input(">>:")) #用户输入的年龄赋值给 guess
if guess > age_of_oldboy : #进行判断 然后返回结果
print("猜的太大了,往小里试试...")
elif guess < age_of_oldboy : #进行判断 然后返回结果
print("猜的太小了,往大里试试...")
else:
print("恭喜你,猜对了...")
#第2次
guess = int(input(">>:"))
if guess > age_of_oldboy :
print("猜的太大了,往小里试试...")
elif guess < age_of_oldboy :
print("猜的太小了,往大里试试...")
else:
print("恭喜你,猜对了...")
#第3次
guess = int(input(">>:"))
if guess > age_of_oldboy :
print("猜的太大了,往小里试试...")
elif guess < age_of_oldboy :
print("猜的太小了,往大里试试...")
else:
print("恭喜你,猜对了...")
不仅非常的麻烦,若是想修改功能还得修改3次,因此记住,写重复代码是程序员最不应该的行为。
那么如何做到不用写重复代码又能让程序重复一段代码多次呢? 循环语句就派上用场啦
语法
while 条件:
执行代码...
while
就是当的意思,while
指 当其后面的条件 成立 ,就执行while
下面的代码
写个让程序从0打印到100的程序 ,每循环一次,+1
count = 0
while count <= 100 : #只要count<=100就不断执行下面的代码
print("loop ", count )
count +=1 #每执行一次,就把count+1,要不然就变成死循环啦,因为count一直是0
输出
loop 0
loop 1
loop 2
loop 3
....
loop 98
loop 99
loop 100
如果我想实现打印1到100的偶数怎么办呢?
那就得先搞清,怎么判断一个数字是偶数,能被2整除的就是偶数对不对, 怎么判断能否被2整除?简单,除完2没有余数就是啦。这个时候就用到上一小节学的取模算运算符?
>>> 10%2
0
>>> 8%2 #无余数,是偶数
0
>>> 7%2 #有余数,是奇数
1
那么将这个条件放到我们的循环程序里
count = 0
while count <= 100 : #只要count<=100就不断执行下面的代码
if count % 2 == 0: #是偶数
print("loop ", count)
count +=1 #每执行一次,就把count+1,要不然就变成死循环啦,因为count一直是0
输出
loop 0
loop 2
loop 4
loop 6
....
loop 96
loop 98
loop 100
死循环
有一种循环叫死循环,一经触发,就运行个天荒地老、海枯石烂。
这种循环以后也会经常用到,就是你要直接去循环一个任务,没有条件触发,因为True本身就是真的
while 是只要后边条件成立(也就是条件结果为真)就一直执行,怎么让条件一直成立呢?
count = 0
while True: #True本身就是真呀
print("你是风儿我是沙,缠缠绵绵到天涯...",count)
count +=1
循环中止语句
如果在循环的过程中,因为某些原因,你不想继续循环了,怎么把它中止掉呢?这就用到break 或 continue 语句
- break用于完全结束一个循环,跳出循环体执行循环后面的语句
- continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环
- 下面我们分别进行 举例
例子:break
count = 0
while count <= 100 : #只要count<=100就不断执行下面的代码
print("loop ", count)
if count == 5:
break
count +=1 #每执行一次,就把count+1,要不然就变成死循环啦,因为count一直是0
print("-----停止循环 ------")
输出
loop 0
loop 1
loop 2
loop 3
loop 4
loop 5
-----停止循环 ------
例子:continue
count = 0
while count <= 100 :
count += 1
if count > 5 and count < 95: #只要count在6-94之间,就不走下面的print语句,直接进入下一次loop
continue
print("loop ", count)
print("-----停止循环 ------")
输出
loop 1
loop 2
loop 3
loop 4
loop 5
loop 95
loop 96
loop 97
loop 98
loop 99
loop 100
loop 101
-----停止循环 ------
while … else …
与其它语言else 一般只与if 搭配不同,在Python 中还有个while …else 语句
while 后面的else 作用是指,当while 循环正常执行完,中间没有被break 中止的话,就会执行else后面的语句
count = 0
while count <= 5 :
count += 1
print("Loop",count)
else:
print("循环正常执行完啦")
print("-----结束了 ------")
输出
Loop 1
Loop 2
Loop 3
Loop 4
Loop 5
Loop 6
循环正常执行完啦
-----结束了 ------
如果执行过程中被break啦,就不会执行else的语句啦
count = 0
while count <= 5 :
count += 1
if count == 3:
break
print("Loop",count)
else:
print("循环正常执行完啦")
print("-----停止循环 ------")
输出
Loop 1
Loop 2
-----停止循环 ------
5.3 for循环
for循环可以做的事情while循环都可以实现,之所以用for循环是因为在循环取值(即遍历值)时for循环比while循环的使用更为简洁,
for循环语法如下
for 变量名 in 可迭代对象: # 此时只需知道可迭代对象可以是字符串\列表\字典,我们之后会学到可迭代对象
代码一
代码二
...
#举个例子
for item in ['a','b','c']:
print(item)
# 运行结果
a
b
c
# 参照例1来介绍for循环的运行步骤
# 步骤1:从列表['a','b','c']中读出第一个值赋值给item(item=‘a’),然后执行循环体代码
# 步骤2:从列表['a','b','c']中读出第二个值赋值给item(item=‘b’),然后执行循环体代码
# 步骤3: 重复以上过程直到列表中的值读尽
案例一:利用 for 和 while 循环打印数字0-5
# 简单版:for循环的实现方式
for count in range(6): # range(6)会产生从0-5这6个数
print(count)
# 复杂版:while循环的实现方式
count = 0
while count < 6:
print(count)
count += 1
案例二:遍历字典
# 简单版:for循环的实现方式
for k in {'name':'jason','age':18,'gender':'male'}: # for 循环默认取的是字典的key赋值给变量名k
print(k)
# 复杂版:while循环确实可以遍历字典,后续将会迭代器部分详细介绍
案例三:for循环嵌套
#请用for循环嵌套的方式打印如下图形:
*****
*****
*****
for i in range(3):
for j in range(5):
print("*",end='')
print() # print()表示换行
注意:break 与 continue也可以用于for循环,使用语法同while循环
打印九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print('%s*%s=%s' %(i,j,i*j),end=' ') #end =''以什么结尾,意思在结尾打印一个空格 不换行
print() #换行
思维导图
本文地址:https://blog.csdn.net/qq_43159517/article/details/107630545