欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python小白成长笔记(四)流程控制

程序员文章站 2022-03-10 19:53:02
每天分享一篇笔记和整理,对python感兴趣的小伙伴多多关注哦,希望大家一起学习今天的内容是python中的判断语句,简单来书就是达到一定的条件,之后去执行你要求的任务5. 流程控制5.1 流程控制之if…else假如把写程序比做走路,那我们到现在走的都是直路,如果遇到了十字路口,我们必须决定下一步该怎么走。我们要判断哪个方向才是要走的路,同理,我们想让程序也能进行判断,只需要在程序里预设一些条件判断语句,满足哪个条件,就走哪条岔路。这个过程就叫流程控制。基本上在各个语言中,都是用语法if...

每天分享一篇笔记和整理,对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()    #换行
    

思维导图

python小白成长笔记(四)流程控制

本文地址:https://blog.csdn.net/qq_43159517/article/details/107630545

相关标签: 自学