zoukankan      html  css  js  c++  java
  • Python学习笔记2(控制语句)

    1.if条件语句

    if(表达式):
         语句1
    else:
         语句2

    2.if...elif...else判断语句

    if(表达式1):语句1
    elif(表达式2):语句2
    ...
    elif(表达式n):语句n
    else:语句m

      eg:

    #if elif else语句
    score = float( input("score:"))
    if 90 <= score <=100:
          print("A")
    elif 80<= score <=90:
          print("B")
    elif 60<= score <=80:
          print("C")
    else:
          print("D")

     PS:编写if条件语句时,尽量避免使用嵌套语句。不便阅读,且可能忽略一些可能性

    1 # 错误的嵌套语句
    2 x = -1
    3 y = 99
    4 if(x != 0):
    5     if(x > 0):
    6         y = 1
    7 else:
    8     y = 0
    9 print ("y =", y)

    注意: Python代码的缩进规则。具有相同缩进的代码被视为代码块,则上面的第7行的 else 语句与第4行的if对应。因此,当x!=0时,只考虑了x大于0的情况。

    缩进请严格按照Python的习惯写法:4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误。

    3.switch语句的代替方案

    python中没有switch语句,因此可用其他方式构造出switch语句。

    • 通过字典实现switch语句
    from _future_ import division
    x = 1
    y = 2
    operator = "/"
    result = {                                  #定义一个字典result
        "+" : x + y
        "-"  : x - y 
        "*" : x * y
        "/"  : x / y
    }
    print ( result.get(operator))
    • 创建一个switch类,处理程序的流转
    class switch(object):
        def _init_(self, value):            # 初始化需要匹配的值value
            self.value = value
            self.fall = False                  # 如果匹配到的case语句中没有break,则fall为True
        def _iter_(self):
            yield self.match                  # 调用match方法  返回一个生成器
            raise StopIteration              # StopIteration异常来判断for循环是否结束
        def match(self, *args):            # 模拟case子句的方法
            if self.fall or not args:          # 如果fall为True,则继续执行下面的case语句
                                                     # 或case子句没有匹配项,则流转到默认分支
                return True
            elif self.value in args:          # 匹配成功
                self.fall = True
                return True
            else:                                  # 匹配失败
                return False
    
    operator = "+"
    x = 1
    y = 2
    for case in switch(operator):         # switch只能用于for in循环中
        if case( '+' ):
            print  (x + y)
            break
        if case( '-' ):
            print  (x - y)
            break
        if  case( '*' ):
            print  (x * y)
            break
        if case( '/' ):
            print  (x / y)
            break
        if case():                                   #默认分支
            print  ""

    PS:switch语句造成代码不已维护,使源代码臃肿。不推荐使用switch。

    4.while循环

    while(表达式):                    # 表达式错误,程序转到else语句
        ...
    else:                                 #else也属于while循环的一部分
        ...                                 #最后一次循环结束后将执行else子句

     eg:(遍历numbers中的数据)

    numbers = input("输入几个数字,用逗号分隔:").split(",")
    print(numbers)
    x = 0
    while x < len(numbers):
        print (number[x])
        x += 1

     5.for循环

    for 变量  in  集合:
        ...
    elsse:                                 #最后一次循环结束后执行else子句,else可省略
        ...

    for...in...循环通常与range()函数一起使用,range()返回一个列表,for...in...遍历列表中的元素。range()函数的声明如下:

    class range(object)
            range(stop) -> range object
        range(start, stop[, step]) -> range object
    # start表示列表开始的值,默认值为0;
    # stop表示列表结束的值,该参数不可缺少;
    # step表示步长,每次递增或递减的值,默认值为1;

    eg:

    for x in range(-1,2):
        if x > 0:
            print  ("正数: ", x)
        elif x == 0:
            print  ("零: ", x)
        else:
            print  ("负数: ", x)
    else:
        print ("循环结束")

    6.break和continue语句(同C)

    7.冒泡排序示例

    #  冒泡排序
    def bubbleSort(numbers):                              # 冒泡算法的实现
        for j in range(len(numbers) -1, -1, -1):
            for i in range(j):
                if numbers[i] > numbers[i*1]:            # 把数值小的数字放到顶端
                   numbers[i], numbers[i+1] = numbers[i+1], numbers[i]
                print  (numbers)
    
    def main():                                                    # 主函数
        numbers = [23, 12, 9, 15, 6]
        bubbleSort(numbers)
    
    if _name_ == '_main_':
        main()
  • 相关阅读:
    unity调用Android功能
    OnLevelWasLoaded 在脚本中执行顺序
    使用Sublime编写Shader
    将当前UI配置写入文件,并且恢复
    AssetBundle 点滴
    NGUI3.7的自适应问题
    Unity3D 消息框架设计
    Unity3D 任务系统设计
    Unreal 4
    基于DBLP的作者协作关系的挖掘
  • 原文地址:https://www.cnblogs.com/farewell-farewell/p/5859849.html
Copyright © 2011-2022 走看看