zoukankan      html  css  js  c++  java
  • python初步学习-python控制流

    语句书写规范

    缩进python语言书写中非常重要,如果缩进不规范,执行程序将会报错

    引用维基百科中的叙述:

    Python開發者有意讓違反了縮排規則的程序不能通過編譯,以此來強迫程序員養成良好的編程習慣。並且Python語言利用縮排表示語句塊的開始和結束(Off-side規則),而非使用花括號或者某種關鍵字。增加縮排表示語句塊的開始,而減少縮排則表示語句塊的結束。縮排成為了語法的一部分。例如if語句.
    根據PEP的規定,必須使用4個空格來表示每級縮排。使用Tab字符和其它數目的空格雖然都可以編譯通過,但不符合編碼規範。支持Tab字符和其它数目的空格僅僅是為兼容很舊的Python程式和某些有問題的編輯程式。

    上面一段话中的几个关键点:

    • 必要要通过缩进方式来表示语句块的开始和结束
    • 缩进用四个空格(也是必须的,别的方式或许可以,但是不提倡)

    if 条件判断

    1. python 编程中 if 语句用于控制程序的执行,基本形式为:
    if 判断条件:
        执行语句……
    else:
        执行语句……
    

    注意:if 语句后面的:是必须的,否则程序会报错

    1. 当判断条件为多个值是,可以使用以下形式:
    if 判断条件1:
        执行语句1……
    elif 判断条件2:
        执行语句2……
    elif 判断条件3:
        执行语句3……
    else:
        执行语句4……
    
    1. 由于python并不支持switch语句,所以多个条件判断,只能用elif来实现,如果判断需要多个条件需同时判断时,可以使用orand来组合实现。
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    # 例3:if语句多个条件
     
    num = 9
    if num >= 0 and num <= 10:    # 判断值是否在0~10之间
        print 'hello'
    # 输出结果: hello
     
    num = 10
    if num < 0 or num > 10:    # 判断值是否在小于0或大于10
        print 'hello'
    else:
        print 'undefine'
    # 输出结果: undefine
     
    num = 8
    # 判断值是否在0~5或者10~15之间
    if (num >= 0 and num <= 5) or (num >= 10 and num <= 15):    
        print 'hello'
    else:
        print 'undefine'
    # 输出结果: undefine
    
    

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

    三元操作符

    三元操作符,是条件语句中比较简练的一种赋值方式,它的模样是这样的:

    >>> name = 'alpha' if 'beta' else 'gamma'
    >>> name
    'alpha'
    >>> name = 'alpha' if '' else 'gamma'
    >>> name
    'gamma'
    >>> name = 'alpha' if 'beta' else 'gamma'
    >>> name
    'alpha'
    

    总结一下:A = Y if X else Z

    • 如果 X 为真,那么就执行 A = Y
    • 如果 X 为假,那么就执行 A = Z

    for 循环语句

    for 语句基本结构:

    for 循环规则:
        操作语句
    

    简单的 for 循环例子

    >>> for i in range(4):
    	print i
    
    	
    0
    1
    2
    3
    
    

    for循环的工作方式为依次获取序列对象的索引(偏移量)的对应值,然后赋值给变量i。因此, python中能够进行for循环语句的数据为序列类型,序列类型包括strlisttuplesetdict

    >>> name_str = 'ping'
    >>> for i in name_str:      #字符串可以循环
    	print i,
    
    	
    p i n g
    >>> name_list = list(name_str)
    >>> for i in name_list:     #列表可以循环
    	print i,
    
    	
    p i n g
    >>> name_set = set(name_str)
    >>> name_set
    set(['i', 'p', 'g', 'n'])
    >>> for i in name_set:  #集合可以循环
    	print i,
    
    	
    i p g n
    >>> name_tuple = tuple(name_str)
    >>> name_tuple
    ('p', 'i', 'n', 'g')
    >>> for i in name_tuple:    #元组可以循环
    	print i,
    
    	
    p i n g
    >>> name_tuple
    ('p', 'i', 'n', 'g')
    >>> mydict    
    {'alpha': 1, 'beta': 2}
    >>> for i in mydict:    #这儿本质上是将字典的键拿出来,成为序列后进行循环
    	print i, mydict[i]
    
    	
    alpha 1
    beta 2
    

    for 循环使用 else 语句

    python 中,for...else 表示这样的意思,for中的语句和普通的没有区别,else中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while...else也是一样

    for 循环并行迭代

    for 循环经常与内置函数zip()enumerate()搭配使用

    zip()

    >>> a = "qiwsir"
    >>> b = "github"
    >>> zip(a,b)
    [('q', 'g'), ('i', 'i'), ('w', 't'), ('s', 'h'), ('i', 'u'), ('r', 'b')]
    

    如果序列长度不同,就以最短的序列为准

    >>> c = [1,2,3]
    >>> d = [9,8,7,6]
    >>> zip(c,d)        # list
    [(1, 9), (2, 8), (3, 7)]
    
    >>> m = {"name","lang"}  
    >>> n = {"qiwsir","python"}
    >>> zip(m,n)        # set
    [('lang', 'python'), ('name', 'qiwsir')]
    
    >>> s = {"name":"qiwsir"}
    >>> t = {"lang":"python"}
    >>> zip(s,t)        # dict
    [('name', 'lang')]
    

    zip是一个内置函数,它的参数必须是某种序列数据类型,如果是字典,那么键视为序列。然后将序列对应的元素依次组成元组,做为一个list的元素。

    下面是比较特殊的情况,当zip函数只有一个参数的时候,生成列表的结果如下:

    >>> a  
    'qiwsir'
    >>> c  
    [1, 2, 3]
    >>> zip(c)
    [(1,), (2,), (3,)]
    >>> zip(a)
    [('q',), ('i',), ('w',), ('s',), ('i',), ('r',)]
    

    问题:有两个列表,分别是:a = [1,2,3,4,5], b = [9,8,7,6,5],要计算这两个列表中对应元素的和。

    >>> d = []
    >>> for x,y in zip(a,b):
    ...     d.append(x+y)
    ... 
    >>> d
    [10, 10, 10, 10, 10]
    

    zip()还能这么干

    >>> result
    [(2, 11), (4, 13), (6, 15), (8, 17)]
    >>> zip(*result)
    [(2, 4, 6, 8), (11, 13, 15, 17)]
    

    enumerate()

    这是一个有意思的内置函数,本来我们可以通过for i in range(len(list))的方式得到一个list的每个元素索引,然后在用list[i]的方式得到该元素。如果要同时得到元素索引和元素怎么办。enumerate()就可以做到

    >>> mydict
    {'alpha': 'one', 'beta': 'two', 'gamma': 'three'}
    >>> for (k,v) in enumerate(mydict):
    ...     print k,v
    ... 
    0 alpha
    1 beta
    2 gamma
    

    对字典进行迭代时,默认使用字典的键来进行迭代
    列举几个例子

    >>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
    >>> list(enumerate(seasons))
    [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
    >>> list(enumerate(seasons, start=1))
    [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
    

    对于这样一个列表:

    >>> mylist = ["qiwsir",703,"python"]
    >>> enumerate(mylist)
    <enumerate object at 0xb74a63c4>
    

    出现这个结果,用list就能实现转换,显示内容。意味着可迭代。

    >>> list(enumerate(mylist))
    [(0, 'qiwsir'), (1, 703), (2, 'python')]
    

    list 解析

    先看下面的例子,这个例子是想得到1到9的每个整数的平方,并且将结果放在list中打印出来

    >>> power2 = []
    >>> for i in range(1,10):
    ...     power2.append(i*i)
    ... 
    >>> power2
    [1, 4, 9, 16, 25, 36, 49, 64, 81]
    

    python有一个非常有意思的功能,就是list解析,就是这样的:

    >>> squares = [x**2 for x in range(1,10)]
    >>> squares
    [1, 4, 9, 16, 25, 36, 49, 64, 81]
    

    其实,不仅仅对数字组成的list,所有的都可以如此操作。请在平复了激动的心之后,默默地看下面的代码,感悟一下list解析的魅力。

    >>> mybag = [' glass',' apple','green leaf ']   #有的前面有空格,有的后面有空格
    >>> [one.strip() for one in mybag]              #去掉元素前后的空格
    ['glass', 'apple', 'green leaf']
    

    在很多情况下,list解析的执行效率高,代码简洁明了。是实际写程序中经常被用到的。

    While 循环语句

    python 编程中 while语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:

    while 判断条件:
        执行语句……
    

    执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空的值均为true

    #!/usr/bin/python
     
    count = 0
    while (count < 9):
       print 'The count is:', count
       count = count + 1
     
    print "Good bye!"
    

    while语句还有另外两个重要的命令continuebreak来跳过循环,continue用于跳过该次循环,break则是用于退出循环,此外“判断条件”还可以是个常值,表示循环必定成立,具体用法如下:

    # continue 和 break 用法
     
    i = 1
    while i < 10:   
        i += 1
        if i%2 > 0:     # 非双数时跳过输出
            continue
        print i         # 输出双数2、4、6、8、10
     
    i = 1
    while 1:            # 循环条件为1必定成立
        print i         # 输出1~10
        i += 1
        if i > 10:     # 当i大于10时跳出循环
            break
    

    如果条件判断语句永远为 true,循环将会无限的执行下去,如下实例:
    实例

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    var = 1
    while var == 1 :  # 该条件永远为true,循环将无限执行下去
       num = raw_input("Enter a number  :")
       print "You entered: ", num
     
    print "Good bye!"
    

    while 循环中使用 else 语句

    python 中,while...else在循环条件为false时执行else语句块:

    #!/usr/bin/python
     
    count = 0
    while count < 5:
       print count, " is  less than 5"
       count = count + 1
    else:
       print count, " is not less than 5"
    
    
  • 相关阅读:
    [zt]【外刊IT评论网】我是如何教我5岁的女儿学编程的
    Three Lines (USACO 2012 US Open, Bronze Division Problem 2)
    my domain
    JQueryDialog(弹出窗口,遮蔽窗口)
    煲耳机
    去掉桌面图标阴影
    RSS有什么用?RSS是什么?
    采用交换机和HUB连接局域网有什么区别?
    电脑经常自动重启的原因
    使用hub(集线器)连接局域网实现文件共享
  • 原文地址:https://www.cnblogs.com/pingqiang/p/7732948.html
Copyright © 2011-2022 走看看