亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python條件和循環(huán)的使用方法

 更新時間:2013年11月01日 15:59:33   作者:  
下面我們來介紹python條件語句和循環(huán)語句的使用方法。

前面已經介紹過幾種基本語句(print,import,賦值語句),下面我們來介紹條件語句,循環(huán)語句。
一. print和import的更多信息
1.1 使用逗號輸出
A.打印多個表達式,用逗號隔開,會在每個參數之間插入一個空格符:

復制代碼 代碼如下:

>>> print 'age:',42
age: 42

B.同時輸出文本和變量值,卻又不希望使用字符串格式化:
復制代碼 代碼如下:

>>> name = 'Peter'
>>> greeting = 'Hello'
>>> print greeting,',',name
Hello , Peter

上面的例子中會在逗號前加入一個空格,我們可以這樣優(yōu)化:
復制代碼 代碼如下:

>>> print greeting + ',',name
Hello, Peter

注意,如果在結尾處加上逗號,那么接下來的語句會與前一句在同一行打印:
復制代碼 代碼如下:

>>> print 'Hello,',
    print 'world'
Hello,world
 

1.2 把某件事作為另一件事導入
從模塊導入函數時,可以使用:
整個模塊導入:import somemodule
導入其中一個函數:from somemodule import somefunction
導入其中幾個函數:from somemodule import somefunction,anotherfunction,yetanotherfunction
導入全部函數:from somemodule import *
如果某2個模塊都有相同名字的函數,比如叫open函數,那么可以這樣給函數或者模塊提供別名:
復制代碼 代碼如下:

>>> import math
>>> import math as foobar
>>> foobar.sqrt(4)
2.0
>>> from math import sqrt as foobar2
>>> foobar2(4)
2.0


二. 賦值魔法
就算是不起眼的賦值語句也有一些特殊的技巧。
2.1 序列解包
序列解包就是將多個值的序列解開,然后放到變量的序列中。

>>> #'多個賦值操作同時進行'
>>> x,y,z = 1,2,3
>>> print x,y,z
1 2 3
>>> #'交換2個或多個變量'
>>> x,y = y,x
>>> print x,y
2 1
>>> #'當函數或方法返回元組時'
>>> s = {'a':1,'b':2,'c':3}
>>> key,value =  s.popitem()
>>> print key,value
a 1
最后一個例子可以看出,它允許函數返回一個以上的值并打包成元組,然后通過一個復制語句很容易進行訪問。
注意:解包的序列中元素數量必須和放置在賦值符合=左邊的變量數量完全一致,否則會引發(fā)異常。

2.2 鏈式賦值
鏈式賦值是將同一個值賦給多個變量的捷徑。
>>> x = y = 'sss'

2.3 增量賦值
增量賦值可以讓代碼更緊湊簡練。
對于+,-,*,/,%等標準運算符都適用:

>>> x = 2
>>> x += 1
>>> x *= 2
>>> x
6
>>> #對其他數據類型也適用
>>> f = 'foo'
>>> f += 'bar'
>>> f
'foobar'

三. 語句塊:縮排的樂趣
 語句塊是條件為真時執(zhí)行一次或多次的一組語句。在python中,冒號(:)用來標識語句塊的開始,塊中的每一個語句都是縮進的。當回退到和已經閉合的塊一樣的縮進量時,就表示當前塊已經結束了。

四. 條件和條件語句
4.1 這就是布爾變量的作用
下面的值在作為布爾表達式的時候,會被解釋器看作假(False):
False None 0 “” () [] {}
其他的一切值都被解釋為真,包括特殊值True。

4.2 條件執(zhí)行和if語句
如果條件判斷為真,那么后面的語句塊就會被執(zhí)行,也可以加入elif進行多個條件檢查。作為if的一部分,還有else子句。
當然,我們可以在if語句里面嵌套使用if語句。

復制代碼 代碼如下:

num = input ('enter a number? ')
if num > 0:
    if num > 50:
        print"num > 50"
    elif num > 10:
        print "num > 10"
    else:
        print "num > 0"
else:
    print "num <= 0"


4.3 更復雜的條件
下面我們回到條件本身,因為它們才是條件執(zhí)行真正有趣的部分。
4.3.1. 比較運算符
復制代碼 代碼如下:

 x == y;     x < y;     x > y;      x >= y;      x <= y;
 x != y;      x is y;     x is not y;   x in y;     x not in y;


4.3.2.  is:同一性運算符
復制代碼 代碼如下:

>>> x = y = [1,2,3]
>>> z = [1,2,3]
>>> x is y
True
>>> x is z
False
>>> x == z
True

由此看出,使用==運算符來判定兩個對象是否相等,使用is判定兩者是否同一個對象。

4.3.3. in:成員資格運算符
復制代碼 代碼如下:

name = raw_input("what is your name?")
if 's' in name:
    print 'your name contains the letter s'
else:
    print 'your name does not contain the letter s'
 

4.3.4.字符串和序列比較
字符串可以按照字符順序排列進行比較。
>>> 'alpha' < 'beta'
True
字符是按照本身的順序值排列的,一個字母的順序值可以用ord函數查到。
其他的序列也可以用同樣的方式進行比較,不過比較的是元素的其他類型。
復制代碼 代碼如下:

>>> [1,2] > [2,1]
False
>>> [1,[2,3]] < [1,[3,2]]
True
 

4.3.5. 布爾運算符
and運算符是所謂的布爾運算符,它連接2個布爾值,并且在兩者都為真時返回真,否則返回假。與它同類的還有2個運算符,or和not。
復制代碼 代碼如下:

number = raw_input("enter a number?")
if number <=10 and number >= 1:
    print "great!"

4.3.6. 斷言
if語句有個近親,工作方式類似于:
復制代碼 代碼如下:

if not condition:
      crash program

這是因為與其讓程序在晚些時候崩潰,不如在錯誤條件出現時直接讓它崩潰。語句中使用的關鍵字是assert。它確保程序中的某個條件為真時才能讓程序正常工作。
復制代碼 代碼如下:

>>> age = -1
>>> assert 0 < age < 100
Traceback (most recent call last):
  File "<pyshell#52>", line 1, in <module>
    assert 0 < age < 100
AssertionError
 

 五. 循環(huán)
 5.1 while循環(huán)
while語句非常靈活,可以在任何條件為真的情況下重復執(zhí)行一個代碼塊。
復制代碼 代碼如下:

name = ''
while not name:
    name = raw_input('please enter your name: ')
print 'hello,%s!' % name

 5.2 for循環(huán)
當要為一個集合(序列和其他可迭代對象)的每個元素都執(zhí)行一個代碼塊時,我們就需要for循環(huán)了。
5.2.1.循環(huán)遍歷字典元素
一個簡單的for語句就能循環(huán)字典的所有鍵,就像處理序列一樣:
d = {'x':1,'y':2,'z':3}
for key in d:
    print key,'corrensponds to ',d[key]
5.2.2.一些迭代工具
A.并行迭代
復制代碼 代碼如下:

names = ['a','b','c','d']
ages = [12,23,45,32]
#循環(huán)索引迭代
for i in range(len(names)):
    print names[i],'is',ages[i],'years old.'
#內建zip函數迭代
for name,age in zip(names,ages):
    print name,'is',age,'years old.'

B.編號迭代
有時候迭代序列中的對象時,同時要獲取當前對象的索引。
復制代碼 代碼如下:

#index計數
index = 0
for string in strings:
    if 'xxx' in string:
        string[index] = 'sss'
    index += 1

#內建enumerate函數迭代
for index,string in strings:
    if 'xxx' in string:
        string[index] = 'sss'

C.翻轉和排序迭代
函數reversed和sorted,作用于任何序列或可迭代對象上,不是原地修改對象,而是返回翻轉或排序后的版本:
復制代碼 代碼如下:

>>> sorted([2,6,3,7])
[2, 3, 6, 7]
>>> list(reversed('hello'))
['o', 'l', 'l', 'e', 'h']

 5.3 跳出循環(huán)
一般情況下循環(huán)會一直執(zhí)行到條件為假,或者到序列元素用完時。但是有時候需要提前中斷一個循環(huán)。
5.3.1.break
結束循環(huán)可以使用break語句。
復制代碼 代碼如下:

for i in range(0,10):
    if i == 5:
        print 'quit'
        break
    print i

5.3.2.continue
continue語句會讓當前迭代結束,跳到下一輪循環(huán)的開始。
復制代碼 代碼如下:

for i in range(0,10):
    if i % 2 == 0:
        continue
    print i

5.3.3.while True/break
比如當用戶在提示符下輸入單詞時做一些事情,并在用戶不輸入單詞后結束循環(huán)。
復制代碼 代碼如下:

while True:
    word = raw_input('enter a word: ')
    if not word:
        break
    print 'The word is '+ word

六. 列表推導式--輕量級循環(huán)
列表推導式是利用其他列表創(chuàng)建新列表的一種方法,工作方式類似于for循環(huán):
復制代碼 代碼如下:

>>> [x**2 for x in range(10) if x % 3 == 0]
[0, 9, 36, 81]
>>> [(x,y) for x in range(3) for y in range(3)]
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)
 

 七. 三人行
作為最后的結束,我們來看3個語句:pass,del和exec
pass:什么都不做,用來在代碼中做占位符使用,方便調試代碼。
復制代碼 代碼如下:

if a == 'a':
    print 'yes'
elif a == 'b':
    pass
else:
    print 'no'

del:刪除不再使用的對象,也就是用作垃圾收集。
復制代碼 代碼如下:

>>> x = [1,2]
>>> y = x
>>> del x
>>> x
Traceback (most recent call last):
  File "<pyshell#62>", line 1, in <module>
    x
NameError: name 'x' is not defined
>>> y
[1, 2]
 

del刪除的只是名稱,而不是列表本身,所以上面的例子中,刪除x不會影響到y(tǒng)。
exec:動態(tài)創(chuàng)造python代碼,然后將其作為語句執(zhí)行或作為表達式計算。但是這樣做是會有很嚴重的潛在安全漏洞,如果程序將用戶提供的一段內容中的一部分字符串作為代碼執(zhí)行,程序可能會失去對代碼執(zhí)行的控制。
復制代碼 代碼如下:

>>> exec "print 'hello,world'"
hello,world

相關文章

  • python中Pycharm 輸出中文或打印中文亂碼現象的解決辦法

    python中Pycharm 輸出中文或打印中文亂碼現象的解決辦法

    本篇文章主要介紹了python中Pycharm 輸出中文或打印中文亂碼現象的解決辦法 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • python實現定制交互式命令行的方法

    python實現定制交互式命令行的方法

    這篇文章主要介紹了python實現定制交互式命令行的方法,需要的朋友可以參考下
    2014-07-07
  • 人生苦短我用python python如何快速入門?

    人生苦短我用python python如何快速入門?

    這篇文章主要教大家如何快速入門python,一個簡短而全面的入門教程帶你走入Python的大門,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 使用Python實現微信拍一拍功能的思路代碼

    使用Python實現微信拍一拍功能的思路代碼

    這篇文章主要介紹了使用Python實現微信“拍一拍”的思路代碼,,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Python with語句上下文管理器兩種實現方法分析

    Python with語句上下文管理器兩種實現方法分析

    這篇文章主要介紹了Python with語句上下文管理器兩種實現方法,結合實例形式較為詳細的分析了Python上下文管理器的相關概念、功能、使用方法及相關操作注意事項,需要的朋友可以參考下
    2018-02-02
  • 詳解Django中的unittest及應用

    詳解Django中的unittest及應用

    unittest是python的一個單元測試框架,它是用于對一個確定結果和預測結果的一種判斷,這篇文章主要介紹了Django中的unittest及應用,需要的朋友可以參考下
    2021-11-11
  • Pandas 模糊查詢與替換的操作

    Pandas 模糊查詢與替換的操作

    這篇文章主要介紹了Pandas 模糊查詢與替換的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Django高并發(fā)負載均衡實現原理詳解

    Django高并發(fā)負載均衡實現原理詳解

    這篇文章主要介紹了Django高并發(fā)負載均衡實現原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • python控制臺中實現進度條功能

    python控制臺中實現進度條功能

    這篇文章主要介紹了python控制臺中實現進度條功能的方法,想要了解的朋友可以參考一下
    2015-11-11
  • python lambda的使用詳解

    python lambda的使用詳解

    這篇文章主要介紹了python lambda的使用詳解,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-02-02

最新評論