Python 條件、迴圈及其它語句
阿新 • • 發佈:2019-01-11
Python 條件、迴圈及其它語句
介紹條件語句
和迴圈語句
及列表推導
。
再談print 和 import
下面就來看看print和import隱藏的幾個特性。
列印多個引數
# 列印多個引數
## 以","號間隔
print('Age:', 42)
## 還可以這樣寫
name = 'Gumby'
salutation = 'Mr.'
greeting = 'Hello,'
print(name, salutation, greeting)
## 新增一個逗號
print(greeting, ',', salutation, name)
## 上面的語句會增加一個空格,我們可以用下面的語句替代
print(greeting + ',', salutation, name)
## 也可以動態新增分隔符(用於生成一個特定格式的字元,如每個引數之間有下劃線的字元_,後續用於陣列處理)
print("I", "wish", "to", "register", "a", "complaint", sep="_")
## 定義結束字串
print("hello,", end=' ')
print("is me")
匯入包時重名
# 匯入包時重新命名
## 我們在匯入包的時候如何做:
#import somemodule
## 或者
#from somemodule import somefunction
## 或者
#from somemodule import somefunction, anotherfunction, yetanotherfunction
## 也可以全部匯入
#from somemodule import *
## ---- 可是在實際應用中,我們可能會遇到匯入相同包名但情況,那我們如何解決呢 ----
# 給引用包起個別名 'as'
#import math as foobar
#print(foobar.sqrt(4))
# 匯入特定函式並給它指定別名的例子
#from math import sqrt as foobar
#print(foobar(4))
# 如此,相同的包我們就可以起不同的別名了
#from module1 import open as open1
#from module2 import open as open2
賦值魔法
序列解包
# 同時給多個變數賦值
x,y,z = 1, 2, 3
print(x, y, z)
# 交換多個引數值(把x變為y,反之亦然)
x, y = y, x
print(x, y, z)
# 序列解包(可迭代物件解包),下面直接輸出了該序列的位置
values = 1,2,3
print(values)
x,y,z = values
print(x)
print(y)
print(z)
# 獲取最後一個鍵值,可以這樣實現
scoundrel = {'name': 'Robin', 'girlfriend': 'Marion'}
key, value = scoundrel.popitem()
print(key)
print(value)
# 要解包的序列包含的元素個數必須對等,否則Python會異常:
# x,y,z=1,2
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module> ValueError: need more than 2 values to unpack >>>x,y,z=1,2,3,4
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module> ValueError: too many values to unpack
# 可以使用 "*" 來收集多餘的值,這樣無需確保值和變數的個數相同。
a,b,*rest=[1,2,3,4]
print(rest)
# 還可以將 "*" 號變數放到其他位置
name = "Albus Percival Wulfric Brian Dumbledore"
first, *middle, last = name.split()
print(middle)
# 賦值語句右邊可以是任何型別的序列,但帶"*"號的變數最終包含的是一個列表,變數和值的個數相同時也是如此:
a, *b, c = "abc"
print(a, b, c)
鏈式賦值
# x = y = somefunction()
# # 上述程式碼與下面的程式碼等價
# x = y = somefunction()
# x = y
# # 注:這兩條語句與下述程式碼|不|對等
# x = somefunction()
# y = somefunction()
增強賦值
x=2
x+=1
print(x)
x*=2
print(x)
x/=2
print(x)
#其他的使用方式
fnord = 'foo'
fnord += 'bar'
print(fnord)
fnord *= 2
print(fnord)
程式碼塊:縮排的樂趣
程式碼塊不是語句,是Python的一個規範,可使用製表符來縮排程式碼。Python將製表符解釋為移動到下一個製表位(相鄰製表位相距8個空格),但標準(最佳的)做法是隻使用空格(而不使用製表符)來縮排,且每級縮排4個空格。
條件和條件語句
讓程式選擇是否要執行特定的語句塊
布林
下面的值都將被直譯器視為假:
- False
- None
- 0
- “”
- ()
- []
- {}
即:標準值False和None、各種型別(包括浮點數、複數等)的數值0、空序列(空字串、空元組、空列表)以及空對映(如空字典)都被視為假
print(True)
print(False)
print(True == 1)
print(False == 0)
print(True + False + 42)
#布林值True和False屬於型別bool,而bool與list、str和tuple一樣,可用來轉換其他的值。
print(bool('I think, therefore I am'))
print(bool())
print(42)
print(0)
條件執行IF
#判斷鍵入第值是不是Gumby
name = input('What is your name? ')
if name.endswith('Gumby'):
print('Hello, Mr. Gumby')
else 子句
# else子句
name = input('What is your name?')
if name.endswith('Gumby'):
print('Hello, Mr. Gumby')
else:
print('Hello, stranger')
#條件表示式
status = "friend" if name.endswith("Gumby") else "stranger"
print(status)
elif 子句
查詢多個條件,可使用elif子句,elif是else if的縮寫,由一個if子句和一個else子句組合而成
num = int(input('Enter a number: '))
if num > 0:
print('The number is positive')
elif num < 0:
print('The number is negative')
else:
print('The number is zero')
程式碼塊巢狀
name = input('What is your name? ')
if name.endswith('Gumby'):
if name.startswith('Mr.'):
print('Hello, Mr. Gumby')
elif name.startswith('Mrs.'):
print('Hello, Mrs. Gumby')
else:
print('Hello, Gumby')
else:
print('Hello, stranger')