函數傳參
python中,函數傳遞參數本質上是一種賦值操作
def func(arr)
arr = 1
print(arr)
a=2
func(a)
print(a)
- 首先有兩個變數arr和a,有兩個物件1和2
- a綁定2,func(a)將a綁定的物件2貼上arr標籤
- 這時,物件1尚未創建,2貼上a標籤和arr標籤
- $arr=1$操作將2上arr標籤撕下,創建物件1並貼上arr標籤
- 輸出結果
1
2
輸入輸出
print()函數
>>>print("字串")
字串
>>>print("str1","str2","str3")
str1 str2 str3#空格取代逗號
print(a+b**c)#會先計算數值再輸出
print(sum(a,b/c))#優先執行sum()函數
==原型==
$$print(self,*args,sep=' ',end='\n',file=None)$$- sep參數:分隔符,多個輸出結果(返回值)之間的分隔符,預設為space,可以手動設置
- end參數:列印後結束方式,預設為$\n$換行,可設置為’ ‘則不換行
input()函數
獲得用戶輸入,並保存為一個==字串== 如果輸入的是數字可通過int()將物件轉換為數字
>>>age=input("Please input your age:")
Please input your age:18
>>>print(age)
'18'#type(age)==<class'str'>
>>>age=int(age)
>>>print(age)
18
- $input()$可以傳入一個字串,會被列印以提示輸入
- 使用$int()$時,如果兩邊有多餘的空格可以用$strip()$方法去除,保存字串物件時也是如此
- $input()$可用於吃掉回車,暫停程式運行 [[資料類型及運算子#字串格式化]]
工具函數
id()
示例 [[資料類型及運算子#賦值方式]] id(變數名)得到變數綁定物件的記憶體位址 變數綁定的物件改變,查詢結果改變,原物件記憶體位址不變
type()
- 一個參數時返回物件的類型
- 三個參數返回新的物件類型
- type(name,bases,dict)
- name – 類的名稱。
- bases – 基類的元組。
- dict – 字典,類內定義的命名空間變數。
# 一個參數實例
>>> type(1)
<type 'int'>
>>> type('runoob')
<type 'str'>
>>> type([2])
<type 'list'>
>>> type({0:'zero'})
<type 'dict'>
>>> x = 1
>>> type( x ) == int # 判斷型別是否相等
True
# 三個參數
>>> class X(object):
... a = 1
...
>>> X = type('X', (object,), dict(a=1)) # 產生一個新的型別 X
>>> X
<class '__main__.X'>
next()
[[基礎資料結構#迭代器物件]]
字串函數
字串物件自帶函數
- 去除首尾空格或字元$lstrip()$,$rstrip()$,$strip()$
str=" 人生苦短,我用Python。 "
print(str.lstrip())#去除左邊空格並輸出
print(str.rstrip())#去除右邊空格並輸出
print(str.strip())#去除左右空格並輸出
str_1='333與君相別離,不知何日是歸期,我如朝露轉瞬晞。333'
print(str_1.strip('3'))#左右刪去所有字元3後輸出
==需要注意,該函數本質上是截取字串的一部分,而非修改原物件== $lstrip()$將返回返回截掉字串左邊的空格或指定字元後生成的新字串。
str=" 人生苦短,我用Python。 "
str.lstrip()#僅僅呼叫函數不賦值也不輸出
print(str)
'''
此時輸出結果仍為
人生苦短,我用Python。
左右均帶空格
說明物件未改變
'''
- 判斷字串是否以某字串開頭/結尾$startswith()$,$endswith()$ 是返回True,否返回False
str="山有木兮木有枝,心悅君兮君不知。"
print(str.starswith("山"))#返回True並輸出
print(str.endswith('不知'))#沒有'。'返回False並輸出
格式化字串
$$f"字串內容{其他字串變數名}字串內容"$$返回格式化後字串 待填坑
分割字串$split()$ 以某字元分割字串為幾個子串,子串中不包括分割符,返回字串列表
str='根,緊握在地下,葉,相觸在雲裡,每一陣風過,我們都互相致意。'
strP=str.split(',')#注意中英文標點
print(str)#輸出原字串物件
print(strP)#輸出分割得到的字串列表
print(strP[1])#輸出"緊握在地下"
數值處理函數
- 絕對值 $$abs()$$
- 取整 $$int()$$
- 四捨五入(返回整數) $$round()$$
- 判斷大小、真假(布林函數) $$bool()$$ [[數據類型及運算符#布林值與空值]]
資料類型轉換函數
- $$int(x [,base])$$ x為原對象,base為可選參數,默認為10表示十進制
- $$float(x)$$
- $$complex(real[,imag])$$ real為實部,imag為可選的虛部參數
- $$str(x)$$
- $$repr(x)$$ 將對象x轉化為表達式字符串(python解釋器能夠讀取的形式)
- $$chr(x)$$ 將一個整數轉換為一個字符
- $$ord(x)$$ 將一個字符轉換為它的整數值
- $$hex(x)$$ 將一個整數x轉換為其十六進制形式的字符串
- $$oct(x)$$ 將一個整數x轉換為其八進制形式==字符串==
- $$eval(str)$$ 用來計算在字符串中的有效Python表達式,並返回一個對象
- $$tuple(s)$$ 將序列s轉化為元組返回
- $$list(s)$$
- $$set(s)$$ 將序列s轉換為可變集合
- $$frozenset(s)$$ 將序列s轉換為不可變集合
- $$dict(d)$$ 將(key,value)形式元組序列d轉換為一個dict
數據類型高低之分
“較高數據類型"和"較低數據類型"是在==隱式類型轉換==中用於描述數據精度的概念。
==精度==可以理解為數據類型能夠表示的信息量或詳細程度。在Python中,數據類型的"高"和"低"主要根據它們的精度來判斷。
這裡的"較高"數據類型指的是能夠表示更多信息(或更精確信息)的數據類型,而"較低"的數據類型則表示的信息較少。 具體來說,比如浮點數就比整數"高”,因為浮點數不僅可以表示整數,還可以表示小數。所以在你的例子中,整數就會被自動轉換為浮點數,以保證信息不丟失。
再比如,複數(complex)就比浮點數(float)和整數(int)“高”,因為複數可以表示實數和虛數,而浮點數和整數只能表示實數。所以在進行運算時,如果操作數包含複數,那麼其他的浮點數或整數就會被轉換為複數。
通常情況下,Python的數據類型的"高低"可以按照如下順序理解: 布爾(bool)< 整型(int) < 浮點型(float)< 複數(complex)。 這個順序主要根據數據類型可以表示的信息範圍和精度來確定的。
不同數據類型之間能否隨意轉化
雖然Python提供了一些內置的函數來實現不同數據類型之間的轉換,如$int(), float(), str(), list(), tuple(), set()$等等,但並非所有類型的數據都可以被轉換成其他任意類型。轉換是否可行,主要取決於數據本身是否包含足夠的信息來表示目標類型。
例如: 你可以輕鬆地將整數轉換為字符串,因為每一個整數都有一個明確的字符串表示(例如,整數123可以表示為字符串"123")。
類似地,一個只包含數字字符的字符串(如"123")可以被轉換為一個整數或浮點數,因為這個字符串中包含了足夠的信息來表示一個數字。
然而: 對於一個非數字字符串(如"Hello"),它無法被轉換為一個整數或浮點數,因為這個字符串並不包含任何可以表示一個數字的信息。
對於一個列表或元組,它可以被轉換為一個集合(如果它的元素是不可變的),但不能被轉換為一個整數,因為一個集合或列表中的元素無法合理地表示為一個單獨的數字。
總的來說,數據類型的轉換==並非無限制==,它取決於原始數據是否能夠提供足夠的信息來表示目標類型。當你在編程中進行類型轉換時,需要注意這一點。
判斷與循環語句
$if,elif,else$語句
if condition1:
1條件成立時要執行操作
elif condition2:
1不成立2成立時執行操作
else:
1,2均不成立時執行操作
eg.
name=input('Who are you?')
age=input('How ord are you?')
if name=='朱冰倩'and age>=19:
print('Daring,long time no see.')
elif name=='朱冰倩' and age==18:
print('Thank you for being in my life.')
else:print('こんにちわ。')
- 假值 :None、空列表、空集合、空字典,空元組、空字符串、0、False 等
- 真值 :非空列表、非空集合、非空字典,非空元組、非空字符串、非 0 數值、True 等
$for,break,continue$語句
普通循環
for x in 序列(list,dict,string,tuple等):
執行程式碼塊
- for會依次將序列中元素提取出賦值給x
帶索引循環
- 如果想在循環的時候,把索引也取出來,可以加一個 $enumerate()$ 函數。
- $enumerate()$函數用於將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列,同時列出數據和數據下標,一般用在 for 循環當中。
- Python 2.3. 以上版本可用,2.6添加 start 參數。
- $$enumerate(sequence,[start=0])$$
- sequence:可迭代對象
- 可選參數start:下標起始位置值,默認為0
galgames=['咖啡館','千戀萬花','天使騷騷']
for index,galgame in enumerate(galgames,1):
print(f'今天玩第{index}部作品{galgame}。')
output 今天玩第1部作品咖啡館。 今天玩第2部作品千戀萬花。 今天玩第3部作品天使騷騷。
break
中斷當前循環,不同層級break中斷不同循環
continue
continue停止執行後續代碼進入下一循環
for-else
- for循環後接與for同級else,當for循環正常執行完時,會自動進入else;
- 如果因為break中斷循環(continue視為正常),則不會進入else分支
while
while 判斷條件:
執行語句
在判斷條件成立(True)時,循環執行語句;不成立,跳出循環 ==避免死循環出現,檢查執行語句能否保證打破循環條件or觸發break==
while-else
同for-else,當不通過break跳出while循環時,執行後面的else分支;否則異常退出不執行else

何時一樽酒,重與細論文。