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 变量类型 & 运算符

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349