Python 基礎 2-2 列表的實際應用場景

瘋狂的大志GD發表於2019-08-31

引言

本章主要介紹列表在實際應用中的使用場景,多維列表(巢狀列表)
如果你需要在列表儲存每個人員的一些基本資訊,使用列表巢狀來儲存這種資訊是個不錯的主意。

多維列表

列表可以根據實際情況巢狀使用,比如你想儲存兩個人的資訊,可使用如下方式
[ ['人員1' , '年齡' , '工資'] , [人員2] , [年齡] ,[工資] ... ]
以上多維列表可以很方便的儲存每個人的資訊,每個索引號對應一個人

巢狀列表使用

將使用者錄入的字串資訊以特定格式分割成列表儲存起來,巢狀到人員列表中

  1. 定義一個存放人員資訊的列表

    emp_lost = []
  2. 使用 split() 將字串分割成列表存到人員列表中

    emp_list = []  # 存放人員資訊列表
    info = input("請錄入員工資訊(逗號分隔):")  # 使用者輸入字串
    info_list = info.split(",")  # 將字元創分隔成列表
    emp_list.append(info_list)  # 將列表追加到人員列表
    print(emp_list)  # 列印人員列表
    # 執行結果:
    '''
    請錄入員工資訊(逗號分隔):張三,22,6000
    [['張三', '22', '6000']]
    '''

現在已經可以使用巢狀列表了,但實際情況往往不止錄入一組員工資訊,可能是N組

錄入多組人員資訊

讓使用者可以錄入多組人員資訊

使用迴圈

emp_list = []
while True:  # while 條件為 True 時會一直執行(死迴圈)
    info = input("請錄入員工資訊(逗號分隔):")
    if info == "":  # 判斷是否錄入資訊
        print("沒有錄入資訊,程式退出")  # 給使用者提示
        break  # 中斷退出迴圈
    # 如果使用者錄入資訊,繼續執行以下程式碼
    info_list = info.split(",")  # 將使用者錄入的字串按照逗號分割成列表
    emp_list.append(info_list)  # 把員工資訊存入到列表中
print(emp_list)  # 列印人員列表

# 執行結果:
'''
請錄入員工資訊(逗號分隔):張三,22,5000
請錄入員工資訊(逗號分隔):李四,23,6000
請錄入員工資訊(逗號分隔):王五,24,7000
請錄入員工資訊(逗號分隔):
沒有錄入資訊,程式退出
[['張三', '22', '5000'], ['李四', '23', '6000'], ['王五', '24', '7000']]
'''

以上示例已經可以讓使用者一直錄入員工資訊了,但是卻不是完善的,因為使用者可以隨便錄入幾個資訊都行,即使只錄入一個名稱也儲存

判斷錄入格式

這裡假設使用者需要錄入三個資訊才是格式正確,“姓名、年齡、工資”
如果錄入少了或超過了都是不正確的格式

emp_list = []
while True:
    info = input("請錄入員工資訊(逗號分隔):")
    if info == "":
        print("沒有錄入資訊,程式退出")
        break
    info_list = info.split(",")
    if len(info_list) != 3:  # 判斷錄入資訊是否為三個元素
        print("錄入格式不正確,請重新錄入!")  # 提示格式不正確
        continue  # 跳過以下程式碼,重新執行迴圈
    emp_list.append(info_list)
print(emp_list)  # 退出列印員工列表

# 執行結果:
'''
請錄入員工資訊(逗號分隔):張三,22,5000
請錄入員工資訊(逗號分隔):李四,23
錄入格式不正確,請重新錄入!
請錄入員工資訊(逗號分隔):李四,23,6000
請錄入員工資訊(逗號分隔):
沒有錄入資訊,程式退出
[['張三', '22', '5000'], ['李四', '23', '6000']]
'''

以上示例控制了使用者輸入的格式

格式化輸出

以上示例中已經可以成功錄入資訊並且有控制使用者錄入的地方了,但是輸出的格式卻不盡人意,下面就解決這個問題

emp_list = []
while True:
    info = input("請錄入員工資訊(逗號分隔):")
    if info == "":
        print("沒有錄入資訊,程式退出")
        break
    info_list = info.split(",")
    if len(info_list) != 3: 
        print("錄入格式不正確,請重新錄入!")
        continue
    emp_list.append(info_list)

for emp in emp_list:
    emp_info = "姓名:{n} \t 年齡:{a} \t 工資:{s}".format( n=emp[0] , a=emp[1] , s=emp[2])  # 將格式化的資訊儲存到 emp_info 變數中
    print(emp_info)  # 列印格式化後的人員資訊

# 執行結果:
'''
請錄入員工資訊(逗號分隔):張三,22,5000
請錄入員工資訊(逗號分隔):李四,23,6000
請錄入員工資訊(逗號分隔):王五,24,7000
請錄入員工資訊(逗號分隔):
沒有錄入資訊,程式退出
姓名:張三    年齡:22   工資:5000
姓名:李四    年齡:23   工資:6000
姓名:王五    年齡:24   工資:7000
'''

本次演示程式的完整程式碼

上面使用到的 format() 方法為格式化函式,官方文件:
https://docs.python.org/3/library/string.h...


大志 Python

敏而好學,不恥下問

相關文章