码迷,mamicode.com
首页 > 其他好文 > 详细

程序控制结构--选择结构

时间:2019-03-05 23:08:17      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:opera   不执行   mod   用法   程序   双分支   index   ...   contain   

选择结构

  • 单分支选择结构

    语法

    if 表达式:
    语句块

    当表达式值为True时,表达式满足,语句块执行,否则不执行

    >>> x = input(‘Input two numbers:‘)
    Input two numbers:23 44
    >>> a,b = map(int,x.split())
    >>> if a<b:
    ...     a,b=b,a
    ...
    >>> print(a,b)
    44 23
    >>> if 3>2: print(‘ok‘)
    ...
    ok
    >>> if True:print(3);print(5)
    ...
    3
    5
  • 双分支选择结构

    语法

    if 表达式:
    语句块1
    else:
    语句块2

    下面的代码通过鸡兔同笼问题演示了双分支结构的用法

    >>> jitu,tui = map(int,input(‘请输入鸡兔总数和腿总数:‘).split())
    请输入鸡兔总数和腿总数:9 28
    >>> tu = (tui - jitui*2)/2
    Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
    NameError: name ‘jitui‘ is not defined
    >>> tu = (tui - jitu*2)/2
    >>> if int(tu) == tu:
    ...     print(‘鸡:{0},兔:{1}‘.format(int(jitu-tu),int(tu)))
    ... else:
    ...     print(‘数据不正确,无解‘)
    ...
    鸡:4,兔:5
  • 三元运算符

    语法

    value1 if condition else value2

    当表达式condition的值与True等价时,表达式的值为value1,否则表达式的值为value2,另外,value1和value2本身也可以是复杂的表达式,这个结构的表达式也具有惰性求值的特点

    >>> a = 5
    >>> print(6) if a>3 else print(5)
    6
    >>> print(6 if a>3 else 5)
    6
    >>> b=6 if a>13 else 9
    >>> b
    9
    >>> x = math.sqrt(9) if 5>3 else random.randint(1,100) # 还未导入math和random模块
    Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
    NameError: name ‘math‘ is not defined
    >>> import math
    >>> x = math.sqrt(9) if 5>3 else random.randint(1,100)
    >>> x = math.sqrt(9) if 2>3 else random.randint(1,100)
    Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
    NameError: name ‘random‘ is not defined
    >>> import random
    >>> x = math.sqrt(9) if 2>3 else random.randint(1,100)
    >>> x
    89
  • 多分支选择结构

    语法

    if 表达式1:
    语句块1
    elif 表达式2:
    语句块2
    elif 表达式3:
    语句块3
    .
    .
    .
    else:
    语句块n

    其中,关键字elif是else if的缩写,实例

    >>> def func(score):
    ...     if score > 100 or score < 0:
    ...             return ‘wrong score.must between 0 and 100.‘
    ...     elif score > 90:
    ...             return ‘A‘
    ...     elif score >=80:
    ...             return ‘B‘
    ...     elif score >=70:
    ...             return ‘C‘
    ...     elif score >= 60:
    ...             return ‘D‘
    ...     else:
    ...             return ‘E‘
    ...
    >>> func(78)
    ‘C‘
  • 选择结构的嵌套

    语法

    if 表达式1:
    语句块1
    if 表达式2:
    语句块2
    else:
    语句块3
    else:
    if 表达式4:
    语句块4

    百分制转等级制的代码

    >>> def func(score):
    ...     degree = ‘DCBAAE‘
    ...     if score>100 or score<0:
    ...             return ‘wrong score.must between 0 and 100.‘
    ...     else:
    ...             index = (score - 60) // 10
    ...     if index >=0:
    ...             return degree[index]
    ...     else:
    ...             return degree[-1]
    ...
    >>> func(78)
    ‘C‘
    >>> func(2)
    ‘E‘
    >>> func(-1)
    ‘wrong score.must between 0 and 100.‘
    >>> func(66)
    ‘D‘
  • 构建跳转表实现多分支选择结构

    使用列表、元组或字典可以很容易构建跳转表,在某些场合下可以更快速地实现类似与多分支的选择结构的功能。例如,下面代码根据不同的输入内容的不同来调用不同的函数完成不同的功能

    >>> funcDict = {‘1‘:lambda:print(‘You input 1‘),‘2‘:lambda:print(‘You input 2‘),‘3‘:lambda:print(‘You input 3‘)}
    >>> x = input(‘Input an integer to call different function:‘)
    Input an integer to call different function:3
    >>> func = funcDict.get(x,None)
    >>> if func:
    ...     func()
    ... else:
    ...     print(‘Wrong integer‘)
    ...
    You input 3

程序控制结构--选择结构

标签:opera   不执行   mod   用法   程序   双分支   index   ...   contain   

原文地址:https://www.cnblogs.com/zxbdboke/p/10480238.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!