1. 程式人生 > >Python 條件、迴圈及其它語句

Python 條件、迴圈及其它語句

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')

更復雜的條件

斷言

迴圈

while 迴圈

for 迴圈

迭代字典

一些迭代工具

跳出迴圈

迴圈中的else子句

簡單推導

三人行

什麼都不做

del刪除

exec 和 eval 執行字串及計算結果

總結