學習python,從入門到放棄(6)
學習python,從入門到放棄(6)
昨日作業
昨日留下了一個猜年齡的程式碼作業用於鞏固前面所學知識,今日給定了標準答案。
我也給出了我的答案。
對比來看老師的程式碼簡潔明瞭,用稍少的程式碼完成了目標,我的程式碼雖然有些冗長而且有重複的程式碼塊,但是添加了年齡隨機數還有在輸入 y/n 的時候考慮了輸入別的內容的情況。
迴圈結構補充
-
while + else
while 是常用的迴圈體程式碼,而 else 的作用則在於當 while 沒有被關鍵字 break 提前結束的情況下,正常結束迴圈體程式碼後才會執行。
可以看到迴圈在 count = 4 的時候 break 了,所以 else
這裡可以看見,條件直接從 5 開始,沒有在 4 時跳出迴圈,while 迴圈正常結束了,於是 else 中的字元就正常的打印出來了。
-
死迴圈
死迴圈即永遠無法結束的迴圈,會一直佔用CPU的資源工作,會極度影響電腦的效能,甚至會造成硬體的損壞。
-
while 巢狀
在一個迴圈中再套入一個或多個迴圈,就是迴圈的巢狀。
flag = True while flag: username = input('username>>>:') password = input('password>>>:') if username == 'jason' and password == '123': print('登入成功') while flag: cmd = input('請輸入您的指令>>>:') if cmd == 'q': print('下次光臨') flag = False print('正在執行您的指令:%s' % cmd) else: print("使用者名稱或密碼錯誤")
-
for 迴圈
for 迴圈可以做到的事,雖然 while 迴圈也可以做到,用法也與while 迴圈一致(break、continue、else)但是 for 迴圈使用起來更加簡單高效,所以使用頻率也更高。
當設計及到迴圈取值的時候,一般會優先考慮使用 for 迴圈而不是 while 迴圈。
name_list = ['jason', 'kevin', 'tony', 'tank', 'oscar'] # 使用while迴圈依次打印出列表中所有的元素 count = 0 while count < 5: print(name_list[count]) count += 1 # 使用for迴圈依次打印出列表中所有的元素 for name in name_list: print(name) ''' jason kevin tony tank oscar ''' # 迴圈字串:依次取出每一個字元 for i in 'hello world': print(i) ''' h e l l o w o r l d ''' # 迴圈字典(特殊):迴圈字典只能獲取到字典的key value無法直接獲取 userinfo_dict = {'username': "jason", 'age': 18, 'gender': 'male'} for i in userinfo_dict: print(i) ''' username age gender ''' # 迴圈元組 for i in (11, 22, 33, 44, 55): print(i) ''' 11 22 33 44 55 ''' # 迴圈集合:字典與集合內部的元素都是無序的 for i in {11, 22, 33, 44, 55, 66}: print(i) ''' 33 66 11 44 22 55 '''
-
range() 函式
range() 函式返回數字序列,預設從 0 開始,預設以 1 遞增,並以指定的數字結束。
range() 函式在python2和python3中有所區分,在 python2 中range() 函式是直接產生一個列表,在元素較多時,會比較佔用記憶體,而在python3中則是以一個 range(a, b) 來表示這個列表,對空間佔用較小。
但是 python2 中有個 xrange() 的功能與 python3 中的 range() 一樣。
# 用法1 括號內只寫一個數字 預設從0開始 顧頭不顧尾 for i in range(5): print(i) ''' 0 1 2 3 4 ''' # 用法2 括號內寫兩個數字 自定義起始位置 顧頭不顧尾 for i in range(1, 5): print(i) ''' 1 2 3 4 ''' # 用法3 括號內寫三個數字 第三個數字表示的是等差數列的差值 預設情況下是1 for i in range(1, 10, 2): print(i) ''' 1 3 5 7 9 '''
資料型別的內建方法
-
int 整型
-
型別轉換
使用 int() 將括號中的字串強制轉換為整型。
需要注意的是 int() 只能轉換純數字的字串,也就是假如該字串是小數、英文字母或者是符號之類的則無法轉換。
-
進位制轉換
bin() 可以將十進位制轉換為二進位制
oct() 可以將十進位制轉換為八進位制
hex() 可以將十進位制轉換為十六進位制
而 int() 也能將其轉換回十進位制。
-
-
float 浮點型
浮點型的型別轉換與整型類似,但是它可以轉換整型和浮點型的字串,依舊不能轉換英文字母或者其他型別的字串。
字串內建方法
-
型別轉換
str() 可以轉換所有基本資料型別。
-
索引與切片
字串的索引取值與列表相似,可以取出字串中指定位次的字串。與列表一樣第一位從 0 開始。
切片是索引的進階,可以從指定位次開始,指定位次結束,依次取出字串中的字元,與 range() 類似,顧頭不顧尾。
也可以在切片中加入步長,使其間隔取值。輸入 2 表示隔一個取值,預設為 1 。
索引和切片也可以倒著取,只要將引數加入 - 號,就可以與預設順序相反的方向取值。
-
字元個數
當計算字串中字元的個數時可以使用 len() 函式。(空格也算一個字元)
-
成員運算
可以使用成員運算 in 來判斷字串中是否存在指定字元或字串。
-
移除字串首尾指定字元
.strip() 函式用於移除字串首尾指定字元,當括號中為空時,預設移除空格。
-
按照指定字元切割字串
.split() 函式用於從左往右按照指定字元切割字串。切割後可以列表儲存,也可以進行解壓賦值。可以使用 .rsplit() 從右往左切割。
總結
今天的內容基本上是新內容了,開始有點吃力,知識點愈發的多了,因為記不太住函式名,所以以後還是要多多使用。