05 - Python 判断 & 循环

一、前言

首先跟各位读者道个歉,最近抽了个时间办了个宴请,所以文章停更了一阵。

从今天开始,我……我……我……我还是不能准时更新,因为接下来我要回黑龙江办主婚礼。

届时可能又会停更半个月,所以……各位读者别打我。

我可是一直号称更新凭缘分,啊哈哈哈。

不闹了,今天的内容比较多,大约3000字,如果不练习,耗时10分钟,如果练习,耗时30分钟以上。

二、判断

2.1 为什么要使用判断?

我们在日常生活中,无可避免的要面临许多选择的地方。

例如我们今天使用哪根牙刷刷牙?我们玩游戏选择哪个角色?我们今天和哪个女朋友见面……

那这个时候,我们就需要在这些选择当中选择出其中一个,那么这个选择就要用到判断

我们常见的判断方式有以下几种。

  • if

  • if..else..

  • if..elif..

  • if..elif..else..

那么接下来就分别来看看这几种判断应该如何来使用吧。

2.2 if

if 是我们最基础的判断方式,同时也是代码中使用相对较多的。

主要就是用来判断一个内容是否成立,如果成立则去执行要做的内容。

它的语法如下:


-------------------

if 要判断的条件:

    条件成立时,要做的事情

-------------------

复制代码

接下来来一个例子。


-------------------

age = 20

if age >= 18:

    print('我都已经成年啦,我的今年')

-------------------

复制代码

根据Python的缩进规则,如果if语句判断是True,就把缩进的print语句执行了,否则,什么也不会做。

2.3 if..else..

那我们刚刚去使用了一下关于 if 判断,可是 if 判断就只能判断一个内容,同时只有满足条件的时候才去执行内部的代码。

但是如果我们的条件不满足的时候,我们应该怎么办呢?

其实我们在 if 以外,还可以配合使用一下 if..else..

它的语法如下:


-------------------

if 条件:

    满足条件时要做的事情1

    满足条件时要做的事情2

    满足条件时要做的事情3

    ...(省略)...

else:

    不满足条件时要做的事情1

    不满足条件时要做的事情2

    不满足条件时要做的事情3

    ...(省略)...

-------------------

复制代码

接下来举一个例子。


-------------------

chePiao = 1 # 用1代表有车票,0代表没有车票

if chePiao == 1:

    print("有车票,可以上火车")

else:

    print("没有车票,不能上车")

-------------------

复制代码

这里需要注意一件事,else 必须配合 if 语句使用,不能单独使用。

2.4 if..elif..

由于每一次if都只能判断一个条件,我们实在是太不方便了。

如果我们需要有多个内容来进行判断,那岂不是整篇代码都是在写if判断了么?

当然不是,我们其实可以使用 if..elif..来帮助我们去更好的书写代码。

它的语法如下:


-------------------

   if xxx1:

        事情1

    elif xxx2:

        事情2

    elif xxx3:

        事情3

-------------------

复制代码

接下来继续举一个例子。


-------------------

    score = 77



    if score>=90 and score<=100:

        print('本次考试,等级为A')

    elif score>=80 and score<90:

        print('本次考试,等级为B')

    elif score>=70 and score<80:

        print('本次考试,等级为C')

    elif score>=60 and score<70:

        print('本次考试,等级为D')

    elif score>=0 and score<60:

        print('本次考试,等级为E')

-------------------

复制代码

2.5 if..elif..else..

其实这个用法才是if..else.. 这种判断的“终极”用法。

例如:


-------------------

   if xxx1:

        事情1

    elif xxx2:

        事情2

    elif xxx3:

        事情3

    else:

    	以上所有条件都不满足时做的事情

-------------------

复制代码

我们会发现,这个其实就是我们 2.4 的内容的翻版,这里就不再赘述了。

2.6 关于判断当中需要注意的内容

需要注意的是,在使用判断的时候,elif 是必须放在 if 的后面的,不能单独使用。

与之类似的还有 else 也必须和 if 连用。

2.7 关于判断的嵌套

关于判断的用法当中,还有一块很重要的内容,就是关于判断的嵌套。

我们在生活当中经常遇到一个问题,中午吃什么?

那么我们应该如何去做呢?


-------------------

if 去包子铺吃:

	if 吃包子:

		print("吃包子")

	if 吃 XXX:

		print("...")

else:

	print("今天减肥不吃饭")

-------------------

复制代码

怎么样,是不是我们需要判断一下具体想要吃什么内容,之后按照我们的想法来去选择要吃的食物呀。

接下来再来一个。


-------------------

money = 1     	# 兜里是否有钱

RMB = 9     	# 兜里有几块钱



if money == 1:

    print("有钱了,我们吃点好的吧")

    if daoLenght < 10:

        print("今天的钱也就够吃碗板面了")

    else:

        print("老板,来份板面加10个鸡蛋")

        

else:

    print("我在减肥,我不饿,我要坚强")

-------------------

复制代码

怎么样,现在是否了解判断的嵌套是什么意思了呢?

2.8 猜拳

这里给大家贴一个很适合学习的小游戏,大家可以试着读一下,看看能不能了解这段代码在做什么。


-------------------

import random



    player = input('请输入:剪刀(0)  石头(1)  布(2):')



    player = int(player)



    computer = random.randint(0,2)



    # 用来进行测试

    #print('player=%d,computer=%d',(player,computer))



    if ((player == 0) and (computer == 2)) or ((player ==1) and (computer == 0)) or ((player == 2) and (computer == 1)):

        print('获胜,哈哈,你太厉害了')

    elif player == computer:

        print('平局,要不再来一局')

    else:

        print('输了,不要走,洗洗手接着来,决战到天亮')

-------------------

复制代码

三、循环

不知道大家有没有被英语老师罚抄单词的经历,让你把整本的单词每个单词抄10遍,那种滋味简直酸爽。

但是如果我们现在是在电脑中,我们应该怎么”偷懒“呢?

这时候我们就需要使用到我们今天的主角了,掌声欢迎循环登场。

  • while 循环

  • for..in 循环

哎哎哎,我说欢迎循环上场,怎么还上来两个人呀?

主持人,我们两位都是循环呀,当然应该一起上来了,不信先让我弟弟 while 循环 先来展示下自己?

3.1 while 循环

首先先来一个大家都懂的故事,那就是每个月的工资。


-------------------

    i = 0

    while i<10000:

        print("老婆大人,这是这个月的工资,请笑纳")

        i+=1

-------------------

复制代码

那么上面的代码会实现什么效果呢?


-------------------

    print("老婆大人,这是这个月的工资,请笑纳")

    print("老婆大人,这是这个月的工资,请笑纳")

    print("老婆大人,这是这个月的工资,请笑纳")

    ...(还有99997遍)...

-------------------

复制代码

那么 while 循环的语法是什么样子的呢?


-------------------

    while 条件:

        条件满足时,做的事情1

        条件满足时,做的事情2

        条件满足时,做的事情3

        ...(省略)...

-------------------

复制代码

按照语法我们来写一个示例。


-------------------

    i = 0

    while i<5:

        print("当前是第%d次执行循环"%(i+1))

        print("i=%d"%i)

        i+=1

-------------------

复制代码

大家可以自己自己测试一下执行出来的结果。

3.2 while 循环测试

3.2.1 计算1~100的累积和(包含1和100) 时间限时:5min

参考答案:


-------------------

#encoding=utf-8



i = 1

sum = 0

while i<=100:

    sum = sum + i

    i += 1



print("1~100的累积和为:%d"%sum)

-------------------

复制代码

3.2.2 计算1~100之间偶数的累积和(包含1和100) 时间限时:5min

参考答案:


-------------------

#encoding=utf-8



i = 1

sum = 0

while i<=100:

    if i%2 == 0:

        sum = sum + i

    i+=1



print("1~100的累积和为:%d"%sum)

-------------------

复制代码

3.3 for.. in 循环

和 while 循环相同,for..in 循环同样也可以将 list(列表) 或者 tuple(数组) 当中每个元素都迭代(依次排列)出来。

它的语法如下:


-------------------

for 临时变量 in 列表或者字符串等:

    循环满足条件时执行的代码

else:

    循环不满足条件时执行的代码

-------------------

复制代码

举个例子:


-------------------

name = 'dongGe'



for x in name:

    print(x)

-------------------

复制代码

这里我直接打印出来这个字符串中的每一个字符。

或者我们也可以去打印一个数组。


-------------------

names = ['Michael', 'Bob', 'Tracy']

for name in names:

    print(name)

-------------------

复制代码

他也会按照顺序去打印出来name中每一个元素。


-------------------

Michael

Bob

Tracy

-------------------

复制代码

3.4 for..in 循环练习

3.4.1 利用 for..in 循环实现 10的阶乘 时间限时:5min

参考答案:


-------------------

sum = 1

for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:

    sum = sum * x

print(sum)

-------------------

复制代码

3.4.2 实现 1 ~ 10000 的累加之和 时间限时:10min

这里需要注意,Python中提供了一个range()函数,range()可以生成一个整数序列。

之后可以再通过list()函数可以转换为list。

比如range(5)生成的序列是从0开始小于5的整数:


-------------------

>>> list(range(5))

[0, 1, 2, 3, 4]

-------------------

复制代码

参考答案:


-------------------

sum = 0

for x in range(10000):

    sum = sum + x

print(sum)

-------------------

复制代码

3.5 break和continue

各个语言中,break和continue 都一直没有缺席过。

他们的作用分别是:

  • break:打断循环(不管循环还有多少次,都直接结束循环)

  • continue:跳出本次循环(直接跳过本次循环,开始下一次循环,不会导致循环提前结束)

3.5.1 break

首先我们还是以我们刚才输出名字的那个案例作为模板。


-------------------

  name = 'lipeng'



  for x in name:

      print('---')

      if x == 'p': 

          break

      print(x)

-------------------

复制代码

我们会发现输出的结果从 p 开始就全部消失了(包含 p)。

接下来再用 while循环来测试一下。


-------------------

  i = 0



  while i<10:

      i = i+1

      print('---')

      if i==5:

          break

      print(i)

-------------------

复制代码

有兴趣的读者可以自己测试一下。

3.5.2 continue

continue 我们一般用在需要在执行的内容中跳过某一条内容的时候去使用。


-------------------

  name = 'lipeng'



  for x in name:

      print('---')

      if x == 'p': 

          continue

      print(x)

-------------------

复制代码

接下来看一下结果。

除此之外,我们在使用 while 循环再实现一次之前的案例。


-------------------

  i = 0



  while i<10:

      i = i+1

      print('---')

      if i==5:

          continue

      print(i)

-------------------

复制代码

这里读者可以自行测试一下。

3.5.3 break和continue 的注意事项

在使用 break和continue 中需要注意:

  • break/continue只能用在循环中,除此以外不能单独使用

  • break/continue在嵌套循环中,只对最近的一层循环起作用

3.6 while 循环的嵌套

这里为什么要单独再来说一下循环的嵌套呢?

我们单纯的使用循环可以实现将我们数组的内容按照次序全部输出出来,但是如果我们面临的内容并不是线性的,

而是矩阵呢?这时候就无可避免的使用到循环的嵌套了。

这里以 while 循环嵌套为例。


-------------------

while 条件1:



    条件1满足时,做的事情

    ...(省略)...



    while 条件2:

        条件2满足时,做的事情

        ...(省略)...

-------------------

复制代码

3.6.1 打印输出下面的图形 时间限时:10min


-------------------

    *

    * *

    * * *

    * * * *

    * * * * *

-------------------

复制代码

参考答案:


-------------------

i = 1

while i<=5:



    j = 1

    while j<=i:

        print("* ",end='')

        j+=1



    print("\n")

    i+=1

-------------------

复制代码

3.6.2 打印 9 * 9 乘法表 时间限时:15min

参考答案:


-------------------

i = 1

while i<=9:

    j=1

    while j<=i:

        print("%d*%d=%-2d "%(j,i,i*j),end='')

        j+=1

    print('\n')

    i+=1

-------------------

复制代码

上篇文章:04 - Python 变量类型 & 运算符

猜你喜欢

转载自juejin.im/post/5b655f245188251ac0632889
今日推荐