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
- Python3單行定義多個變量或賦值方法
- python嵌套函數使用外部函數變量的方法(Python2和Python3)
- python if not in 多條件判斷代碼
- Python中條件判斷語句的簡單使用方法
- Python中條件選擇和循環(huán)語句使用方法介紹
- Python3基礎之條件與循環(huán)控制實例解析
- Python入門篇之條件、循環(huán)
- 詳解Python中的條件判斷語句
- Python中的條件判斷語句與循環(huán)語句用法小結
- Python實現多條件篩選目標數據功能【測試可用】
- Python3.5基礎之變量、數據結構、條件和循環(huán)語句、break與continue語句實例詳解
相關文章
python中Pycharm 輸出中文或打印中文亂碼現象的解決辦法
本篇文章主要介紹了python中Pycharm 輸出中文或打印中文亂碼現象的解決辦法 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06