菜鸟教程 -- 学的不仅是技术,更是梦想!

Python 基础教程
(追記) (追記ここまで)

Python 条件语句

Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。

可以通过下图来简单了解条件语句的执行过程:

Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。

Python 编程中 if 语句用于控制程序的执行,基本形式为:

if 判断条件:
 执行语句……
else:
 执行语句……

其中"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。

else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句。

Gif 演示:

具体例子如下:

实例

#!/usr/bin/python# -*- coding: UTF-8 -*-# 例1:if 基本用法flag = Falsename = 'luren'ifname == 'python': # 判断变量是否为 python flag = True# 条件成立时设置标志为真print'welcome boss'# 并输出欢迎信息else: printname# 条件不成立时输出变量名称

输出结果为:

luren      # 输出结果

if 语句的判断条件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。

当判断条件为多个值时,可以使用以下形式:

if 判断条件1:
 执行语句1……
elif 判断条件2:
 执行语句2……
elif 判断条件3:
 执行语句3……
else:
 执行语句4……

实例如下:

实例

#!/usr/bin/python# -*- coding: UTF-8 -*-# 例2:elif用法num = 5ifnum == 3: # 判断num的值print'boss'elifnum == 2: print'user'elifnum == 1: print'worker'elifnum < 0: # 值小于零时输出print'error'else: print'roadman'# 条件均不成立时输出

输出结果为:

roadman    # 输出结果

由于 python 并不支持 switch 语句,所以多个条件判断,只能用 elif 来实现,如果判断需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。

实例

#!/usr/bin/python# -*- coding: UTF-8 -*-# 例3:if语句多个条件num = 9ifnum >= 0andnum <= 10: # 判断值是否在0~10之间print'hello'# 输出结果: hellonum = 10ifnum < 0ornum > 10: # 判断值是否在小于0或大于10print'hello'else: print'undefine'# 输出结果: undefinenum = 8# 判断值是否在0~5或者10~15之间if(num >= 0andnum <= 5)or(num >= 10andnum <= 15): print'hello'else: print'undefine'# 输出结果: undefine

当if有多个条件时可使用括号来区分判断的先后顺序,括号中的判断优先执行,此外 and 和 or 的优先级低于>(大于)、<(小于)等判断符号,即大于和小于在没有括号的情况下会比与或要优先判断。

简单的语句组

你也可以在同一行的位置上使用if条件判断语句,如下实例:

实例

#!/usr/bin/python # -*- coding: UTF-8 -*-var = 100if(var == 100) : print"变量 var 的值为100"print"Good bye!"

以上代码执行输出结果如下:

变量 var 的值为100
Good bye!
AI 思考中...

5 篇笔记 写笔记

  1. #0

    神仙氏族

    a72***@qq.com

    259

    python 复合布尔表达式计算采用短路规则,即如果通过前面的部分已经计算出整个表达式的值,则后面的部分不再计算。如下面的代码将正常执行不会报除零错误:

    a=0
    b=1
    if ( a > 0 ) and ( b / a > 2 ):
     print "yes"
    else :
     print "no"
    

    而下面的代码就会报错:

    a=0
    b=1
    if ( a > 0 ) or ( b / a > 2 ):
     print "yes"
    else :
     print "no"

    神仙氏族

    a72***@qq.com

    9年前 (2017年05月20日)
  2. #0

    Tao

    num***[email protected]

    68
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    # 一个简单的条件循环语句实现汉诺塔问题
    def my_print(args):
     print args
    def move(n, a, b, c):
     my_print ((a, '-->', c)) if n==1 else (move(n-1,a,c,b) or move(1,a,b,c) or move(n-1,b,a,c))
    move (3, 'a', 'b', 'c')

    更多汉诺塔问题参阅:https://www.runoob.com/w3cnote/python-tower.html

    Tao

    num***[email protected]

    9年前 (2017年07月03日)
  3. #0

    sherlockzak

    for***[email protected]

    101

    Python 没有 switch/case 语句,如果遇到很多中情况的时候,写很多的 if/else 不是很好维护,这时可以考虑用字典映射的方法替代:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    import os
    def zero():
     return "zero"
    def one():
     return "one"
    def two():
     return "two"
    def num2Str(arg):
     switcher={
     0:zero,
     1:one,
     2:two,
     3:lambda:"three"
     }
     func=switcher.get(arg,lambda:"nothing")
     return func()
    if __name__ == '__main__':
     print num2Str(0)

    sherlockzak

    for***[email protected]

    8年前 (2018年03月30日)
  4. #0

    John

    oyw***@126.com

    52

    if 简单条件判断一行搞定:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    a = [1,2,3]
    b = a if len(a) != 0 else ""
    print(b)
    c=[]
    d = c if len(c) != 0 else "c 是一个空列表"
    print(d)

    输出结果为:

    [1, 2, 3]
    c 是一个空列表

    John

    oyw***@126.com

    8年前 (2018年05月22日)
  5. #0

    琳琅月

    z46***[email protected]

    59

    将列表中重复的数据放在后面,返回列表中元素去除重复后的个数:

    def deduplication(nums):
     # write your code here
     exist_nums = {} 
     pointer = 0
     for num in nums:
     if num not in exist_nums:
     exist_nums[num] = True
     nums[pointer] = num
     pointer += 1
     return pointer
    print(deduplication([1,1,1,1,1,1,2,2,2,2,2,2,2,2]))

    琳琅月

    z46***[email protected]

    7年前 (2019年07月13日)

点我分享笔记

  • 昵称 (必填)
  • 邮箱 (必填)
  • 引用地址

AltStyle によって変換されたページ (->オリジナル) /