zoukankan      html  css  js  c++  java
  • 【python系统学习04】条件判断语句

    if,elif,else 条件判断语句

    写法

    number = 1
    if number=='1': # 这里注意英文冒号
    print('1') # 这里注意缩进
    elif number=='2': # 表达式没有小括号包裹
    print('2-1') print('2-2') print('2-3') elif number=='3': print('3') else: print('heihei')

    学过 js 的你,看到这个肯定小 case 吧!肯定第一时间得到答案,打印出“1”吧!

    实际答案是“heihei”

    这就是 python 和 js 的不同之处了。

    python 和 js 的不同之处

    上上节数据类型的时候我强调了好多遍的。python 是强类型语言,不会做隐式类型转换

    这里number == '1'在 js 中,肯定会把双等号左右的数据类型统一,然后判断得到 true,if 条件成立。

    但是在 python 中,number 是 int 类型的 1,而双等号右边的是 str 类型的 1,他俩不相等,if 条件不成立。

    所以,最后走到 else 条件,输出“heihei”。

    在这里依据 js 的写法,学一下 python 的写法:

    if 在 python 中的写法总结

    • if 后边表达式没有小括号
    • 表达式后边写英文冒号
    • 语句块没有大括号包裹,直接冒号后回车。可以巧记成冒号代替大括号。
    • if 条件成立后要执行的语句块在冒号下边、且需要“缩进”
    • elif写法 (对应 js 中的 else if)
    • python 中判断左右相等用双等号,没有三等号。

    关于缩进

    注意:在条件判断代码中的冒号“:”后、下一行内容的前面,要有缩进,空几个格。

    对于 Python 而言,冒号和缩进是一种语法。它会帮助 Python 区分代码之间的层次,理解条件执行的逻辑及先后顺序。【注:缩进是四个空格或一个 Tab 键】

    在 if 条件语言中,缩进不需要我们手动按空格键。当你用英文输入法打:后按回车,我们的开发工具(用来编写 Python 代码的程序)为了方便大家编程,会自动实现下一行代码,向右缩进的功能。

    被缩进的内容(print()函数)和 if 条件语句组成了一个代码块(一个整体),成为了 if 条件下的内部命令。

    如果赋值满足 if 条件,计算机就会准确执行 if 条件内部的命令(即缩进的代码块)。

    无缩进报错

    如果在 if 语句下边没有缩进的代码块。就会报错。(详细错误见上一节的缩进错误)

    这是因为,当我们去掉缩进时,if 条件和 print 命令成为了两个不同的代码组,属于平行关系。你看:if 条件下面,缺少了可以执行的动作。我们想一下:无论条件成不成立,都不会执行什么操作,这个条件的存在没有任何意义。

    语法

    总结出语法如下:

    if xxx :
    # if语句 条件:
      xxxx
      # 带缩进的代码块
    # if后边跟英文冒号,换行后自动缩进。
    

    接下来系统说说这三个语句

    单向判断:if...

    含义:如果……就

    条件成立,执行冒号下边缩进在 if 语句里的内容。

    number=6
    # 条件:如果number数量小于6,打印“我是爱你的”
    if number >=6 :
    print('我是爱你的')

    print('我没有错缩进,不是if的语句块,不受条件限制,我都要打印。')
    # 我是爱你的
    # 我没有错缩进,不是if的语句块,不受条件限制,我都要打印。

    条件不满足,无法执行 if 条件下的命令,从而自动跳过,执行下一行命令。

    number=6
    # 条件:如果number数量小于6,打印“我不爱你了”
    if number < 6:
    print('我不爱你了')

    print('我没有错缩进,不是if的语句块,不受条件限制,我都要打印。')
    # 我没有错缩进,不是if的语句块,不受条件限制,我都要打印。

    所以上述代码没有打印“我不爱你了”,而是直接跳过,打印代码块外边不受if控制的print。

    双向判断:if...else...

    双向判断表示的是条件和其他条件的互斥关系——

    条件满足,执行if下边的代码块。

    如果不满足条件时,执行else下的代码块

    即if和else下的代码块只会执行一个

    bool = False 
    # 注意这里,不要写成js中的“false”。
    if bool:
    print('我爱你') else: print('我不爱你了') print('我没有错缩进,不是if的语句块,不受条件限制,我都要打印。') # 我不爱你了 # 我没有错缩进,不是if的语句块,不受条件限制,我都要打印。

    上述条件不满足,执行else内的代码块:“我不爱你了”

    多向判断:if...elif...else...

    用于判断三个或三个以上的条件时:

    • if的条件满足,执行if下边的代码块。

    • 反之,elif的条件满足,执行elif下边的代码块。 elif可以有多个,你乐意写多少都行。

    • 实在都不满足,执行else下的代码块

    if、elif、else三者所代表的条件都是互斥的。

    score = 74
    if score > 99: print('优秀') elif score > 85: print('良好') elif score > 66: print('及格') else: print('好意思吗?!') print('我没有错缩进,不是if的语句块,不受条件限制,我都要打印。') # 及格 # 我没有错缩进,不是if的语句块,不受条件限制,我都要打印。

    74不满足>99,所以if下边的代码块跳过不执行

    74不满足>85,所以第1个elif下边的代码块跳过不执行

    74满足>66,所以执行第2个elif下边的代码块,打印及格

    最后跳过else,执行最后不受语句控制的print。

    if 嵌套

    if嵌套的应用场景,简单来讲就是:在第一个条件条件满足的情况下,在此基础上增加额外的条件判断。

    嵌套示例

    实现如果底下还有如果、条件里还套条件

    goal = 94
    if goal > 99: if goal < 105: print('天才') else: print('人间精品') elif goal > 85: if goal > 90: # 嵌套if
    print('优秀') else: print('良好') print('是个人才!') elif goal > 66: print('及格') else: print('好意思吗?!') # 优秀 # 是个人才!

    94分,满足第一个elif的>85的条件,执行elif下的代码块

    在代码块中,还有一组if...else...

    因为满足嵌套if中的else,即85不大于90。所以打印良好

    elif goal > 85:这组代码块中,还有一个print('是个人才!')不受内部嵌套if的管制,所以在第一个elif条件成立后,也打印了出来。

    嵌套执行顺序

    缩进相同的命令处于同一个等级。

    因为计算机就要按顺序一条一条地执行命令

    先给goal赋值为94

    if、elif、else是只能走一个的互斥关系,所以当条件满足第一个elif的时候,就进入该elif的代码块内。 如下:

    elif goal > 85:
      if goal > 90: # 嵌套if
    print('优秀') else: print('良好') print('是个人才!')

    其他条件的代码块将不会执行。

    在上述代码中,又一个嵌套if,则继续判断条件,进入if、else互斥条件中的其中一个代码块内。

    根据成立条件,进入if,打印“优秀”

    if goal > 90: # 嵌套if
    print('优秀')

    最后,跳出嵌套if,执行嵌套if外边、elif里边的其他剩余代码,打印“是个人才”。

    print('是个人才!')
    

    思考应用题

    用py代码实现如下逻辑(欢迎评论留言你的写法)

    秋天到了,树上果子熟了。猴妈妈让小猴子去山上摘果子。猴妈妈告诉猴子:

    如果碰到了苹果树,树上还有5个以上红果子,就摘五个苹果回来。没有的话就摘两个青果子。

    碰到了香蕉树,若手里有5个苹果拿不了多少,就摘两根回来。手里有2个苹果,就摘10根香蕉回来。手里没苹果,就尽可能多摘回来点香蕉。

    若什么树都没有碰到,就去山上庙里化点斋饭回来。

    原网页地址

  • 相关阅读:
    没有spring如何使用注解下篇
    在没有spring框架如何使用注解上篇
    oracle11g里sqldeveloper不能打开的问题
    java代码换行
    枚举接口Enumeration
    java开发环境的搭建(上班笔记01)
    2013.12.12-2013.12.22面试
    2013.12.12-2013.12.20面试
    supervisor superlance
    Laravel 返回日期问题2021-07-23T05:56:03.000000Z
  • 原文地址:https://www.cnblogs.com/padding1015/p/12198902.html
Copyright © 2011-2022 走看看