1. 程式人生 > 其它 >學習python,從入門到放棄(6)

學習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 迴圈一致(breakcontinueelse)但是 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 整型

    1. 型別轉換

      使用 int() 將括號中的字串強制轉換為整型。

      需要注意的是 int() 只能轉換純數字的字串,也就是假如該字串是小數、英文字母或者是符號之類的則無法轉換。

    2. 進位制轉換

      bin() 可以將十進位制轉換為二進位制

      oct() 可以將十進位制轉換為八進位制

      hex() 可以將十進位制轉換為十六進位制

      int() 也能將其轉換回十進位制。

  • float 浮點型

    浮點型的型別轉換與整型類似,但是它可以轉換整型和浮點型的字串,依舊不能轉換英文字母或者其他型別的字串。

字串內建方法

  1. 型別轉換

    str() 可以轉換所有基本資料型別。

  2. 索引與切片

    字串的索引取值與列表相似,可以取出字串中指定位次的字串。與列表一樣第一位從 0 開始。

    切片是索引的進階,可以從指定位次開始,指定位次結束,依次取出字串中的字元,與 range() 類似,顧頭不顧尾。

    也可以在切片中加入步長,使其間隔取值。輸入 2 表示隔一個取值,預設為 1 。

    索引和切片也可以倒著取,只要將引數加入 - 號,就可以與預設順序相反的方向取值。

  3. 字元個數

    當計算字串中字元的個數時可以使用 len() 函式。(空格也算一個字元)

  4. 成員運算

    可以使用成員運算 in 來判斷字串中是否存在指定字元或字串。

  5. 移除字串首尾指定字元

    .strip() 函式用於移除字串首尾指定字元,當括號中為空時,預設移除空格。

  6. 按照指定字元切割字串

    .split() 函式用於從左往右按照指定字元切割字串。切割後可以列表儲存,也可以進行解壓賦值。可以使用 .rsplit() 從右往左切割。

總結

今天的內容基本上是新內容了,開始有點吃力,知識點愈發的多了,因為記不太住函式名,所以以後還是要多多使用。