python條件和循環(huán)的使用方法
前面已經(jīng)介紹過幾種基本語句(print,import,賦值語句),下面我們來介紹條件語句,循環(huán)語句。
一. print和import的更多信息
1.1 使用逗號輸出
A.打印多個表達(dá)式,用逗號隔開,會在每個參數(shù)之間插入一個空格符:
>>> print 'age:',42
age: 42
B.同時輸出文本和變量值,卻又不希望使用字符串格式化:
>>> name = 'Peter'
>>> greeting = 'Hello'
>>> print greeting,',',name
Hello , Peter
上面的例子中會在逗號前加入一個空格,我們可以這樣優(yōu)化:
>>> print greeting + ',',name
Hello, Peter
注意,如果在結(jié)尾處加上逗號,那么接下來的語句會與前一句在同一行打?。?BR>
>>> print 'Hello,',
print 'world'
Hello,world
1.2 把某件事作為另一件事導(dǎo)入
從模塊導(dǎo)入函數(shù)時,可以使用:
整個模塊導(dǎo)入:import somemodule
導(dǎo)入其中一個函數(shù):from somemodule import somefunction
導(dǎo)入其中幾個函數(shù):from somemodule import somefunction,anotherfunction,yetanotherfunction
導(dǎo)入全部函數(shù):from somemodule import *
如果某2個模塊都有相同名字的函數(shù),比如叫open函數(shù),那么可以這樣給函數(shù)或者模塊提供別名:
>>> import math
>>> import math as foobar
>>> foobar.sqrt(4)
2.0
>>> from math import sqrt as foobar2
>>> foobar2(4)
2.0
二. 賦值魔法
就算是不起眼的賦值語句也有一些特殊的技巧。
2.1 序列解包
序列解包就是將多個值的序列解開,然后放到變量的序列中。
>>> #'多個賦值操作同時進(jìn)行'
>>> x,y,z = 1,2,3
>>> print x,y,z
1 2 3
>>> #'交換2個或多個變量'
>>> x,y = y,x
>>> print x,y
2 1
>>> #'當(dāng)函數(shù)或方法返回元組時'
>>> s = {'a':1,'b':2,'c':3}
>>> key,value = s.popitem()
>>> print key,value
a 1
最后一個例子可以看出,它允許函數(shù)返回一個以上的值并打包成元組,然后通過一個復(fù)制語句很容易進(jìn)行訪問。
注意:解包的序列中元素數(shù)量必須和放置在賦值符合=左邊的變量數(shù)量完全一致,否則會引發(fā)異常。
2.2 鏈?zhǔn)劫x值
鏈?zhǔn)劫x值是將同一個值賦給多個變量的捷徑。
>>> x = y = 'sss'
2.3 增量賦值
增量賦值可以讓代碼更緊湊簡練。
對于+,-,*,/,%等標(biāo)準(zhǔn)運算符都適用:
>>> x = 2
>>> x += 1
>>> x *= 2
>>> x
6
>>> #對其他數(shù)據(jù)類型也適用
>>> f = 'foo'
>>> f += 'bar'
>>> f
'foobar'
三. 語句塊:縮排的樂趣
語句塊是條件為真時執(zhí)行一次或多次的一組語句。在python中,冒號(:)用來標(biāo)識語句塊的開始,塊中的每一個語句都是縮進(jìn)的。當(dāng)回退到和已經(jīng)閉合的塊一樣的縮進(jìn)量時,就表示當(dāng)前塊已經(jīng)結(jié)束了。
四. 條件和條件語句
4.1 這就是布爾變量的作用
下面的值在作為布爾表達(dá)式的時候,會被解釋器看作假(False):
False None 0 “” () [] {}
其他的一切值都被解釋為真,包括特殊值True。
4.2 條件執(zhí)行和if語句
如果條件判斷為真,那么后面的語句塊就會被執(zhí)行,也可以加入elif進(jìn)行多個條件檢查。作為if的一部分,還有else子句。
當(dāng)然,我們可以在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 更復(fù)雜的條件
下面我們回到條件本身,因為它們才是條件執(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.字符串和序列比較
字符串可以按照字符順序排列進(jìn)行比較。
>>> 'alpha' < 'beta'
True
字符是按照本身的順序值排列的,一個字母的順序值可以用ord函數(shù)查到。
其他的序列也可以用同樣的方式進(jìn)行比較,不過比較的是元素的其他類型。
>>> [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
這是因為與其讓程序在晚些時候崩潰,不如在錯誤條件出現(xiàn)時直接讓它崩潰。語句中使用的關(guān)鍵字是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語句非常靈活,可以在任何條件為真的情況下重復(fù)執(zhí)行一個代碼塊。
name = ''
while not name:
name = raw_input('please enter your name: ')
print 'hello,%s!' % name
5.2 for循環(huán)
當(dāng)要為一個集合(序列和其他可迭代對象)的每個元素都執(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.'
#內(nèi)建zip函數(shù)迭代
for name,age in zip(names,ages):
print name,'is',age,'years old.'
B.編號迭代
有時候迭代序列中的對象時,同時要獲取當(dāng)前對象的索引。
#index計數(shù)
index = 0
for string in strings:
if 'xxx' in string:
string[index] = 'sss'
index += 1
#內(nèi)建enumerate函數(shù)迭代
for index,string in strings:
if 'xxx' in string:
string[index] = 'sss'
C.翻轉(zhuǎn)和排序迭代
函數(shù)reversed和sorted,作用于任何序列或可迭代對象上,不是原地修改對象,而是返回翻轉(zhuǎn)或排序后的版本:
>>> 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
結(jié)束循環(huán)可以使用break語句。
for i in range(0,10):
if i == 5:
print 'quit'
break
print i
5.3.2.continue
continue語句會讓當(dāng)前迭代結(jié)束,跳到下一輪循環(huán)的開始。
for i in range(0,10):
if i % 2 == 0:
continue
print i
5.3.3.while True/break
比如當(dāng)用戶在提示符下輸入單詞時做一些事情,并在用戶不輸入單詞后結(jié)束循環(huán)。
while True:
word = raw_input('enter a word: ')
if not word:
break
print 'The word is '+ word
六. 列表推導(dǎo)式--輕量級循環(huán)
列表推導(dǎo)式是利用其他列表創(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)
七. 三人行
作為最后的結(jié)束,我們來看3個語句:pass,del和exec
pass:什么都不做,用來在代碼中做占位符使用,方便調(diào)試代碼。
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í)行或作為表達(dá)式計算。但是這樣做是會有很嚴(yán)重的潛在安全漏洞,如果程序?qū)⒂脩籼峁┑囊欢蝺?nèi)容中的一部分字符串作為代碼執(zhí)行,程序可能會失去對代碼執(zhí)行的控制。
>>> exec "print 'hello,world'"
hello,world
- Python3單行定義多個變量或賦值方法
- python嵌套函數(shù)使用外部函數(shù)變量的方法(Python2和Python3)
- python if not in 多條件判斷代碼
- Python中條件判斷語句的簡單使用方法
- Python中條件選擇和循環(huán)語句使用方法介紹
- Python3基礎(chǔ)之條件與循環(huán)控制實例解析
- Python入門篇之條件、循環(huán)
- 詳解Python中的條件判斷語句
- Python中的條件判斷語句與循環(huán)語句用法小結(jié)
- Python實現(xiàn)多條件篩選目標(biāo)數(shù)據(jù)功能【測試可用】
- Python3.5基礎(chǔ)之變量、數(shù)據(jù)結(jié)構(gòu)、條件和循環(huán)語句、break與continue語句實例詳解
相關(guān)文章
python中Pycharm 輸出中文或打印中文亂碼現(xiàn)象的解決辦法
本篇文章主要介紹了python中Pycharm 輸出中文或打印中文亂碼現(xiàn)象的解決辦法 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06Python with語句上下文管理器兩種實現(xiàn)方法分析
這篇文章主要介紹了Python with語句上下文管理器兩種實現(xiàn)方法,結(jié)合實例形式較為詳細(xì)的分析了Python上下文管理器的相關(guān)概念、功能、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下2018-02-02Django高并發(fā)負(fù)載均衡實現(xiàn)原理詳解
這篇文章主要介紹了Django高并發(fā)負(fù)載均衡實現(xiàn)原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04