python中的列表、元組、字典、字串、切片(設計一個名片管理系統)
阿新 • • 發佈:2019-02-13
列表(List)
序列是Python中最基本的資料結構。序列中的每個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。
Python有6個序列的內建型別,但最常見的是列表和元組。
序列都可以進行的操作包括索引,切片,加,乘,檢查成員。
此外,Python已經內建確定序列的長度以及確定最大和最小的元素的方法。
列表是最常用的Python資料型別,它可以作為一個方括號內的逗號分隔值出現。
列表的資料項不需要具有相同的型別
建立一個列表,只要把逗號分隔的不同的資料項使用方括號括起來即可。如下所示:
對列表中的元素進行排序
倒著列印列表元素
元組
Python的元組與列表類似,不同之處在於元組的元素不能修改。
元組使用小括號,列表使用方括號。
元組是不可變資料型別,不能修改元素,列表是可變資料型別,可以修改元素
元組建立很簡單,只需要在括號中新增元素,並使用逗號隔開即可。
字典
字典是另一種可變容器模型,且可儲存任意型別物件。
字典的每個鍵值key=>value
對用冒號:
分割,每個鍵值對之間用逗號,
分割,整個字典包括在花括號{}
中
字串
字串是 Python 中最常用的資料型別。我們可以使用引號(‘或”)來建立字串。
建立字串很簡單,只要為變數分配一個值即可。例如:
切片
應用
設計一個名片管理系統
其功能及介面如下圖所示
程式碼如下:
主程式:
import cards_tools #無限迴圈,由使用者主動決定什麼時候退出 while True: #TODO註釋,用於標記需要去做的工作 cards_tools.show_menu() action_str = raw_input("請選擇希望執行的操作: ") print("你選擇的操作是 %s" % action_str) #1,2,3針對名片的操作 if action_str in ["1","2","3"]: if action_str == "1": cards_tools.new_card() elif action_str == "2": cards_tools.show_all() elif action_str == "3": cards_tools.search_card() #0退出系統 elif action_str == "0": print("歡迎再次使用【名片管理系統】:") break #如果在開發程式時,不希望立刻編寫分支內部的程式碼 #可以使用pass關鍵字,表示一個佔位符,能夠保證程式的程式碼結構正確 #執行程式時,pass關鍵字不會執行任何操作 else: print("輸入錯誤,請重新輸入:")
功能程式:
card_list = []
def show_menu():
"""顯示選單"""
print '*' * 50
print '歡迎使用【名片管理系統】'
print ''
print '1.新增名片'
print '2.顯示全部'
print '3.搜尋名片'
print '0.退出系統'
print '*' * 50
def new_card():
"""新增名片"""
print '-' * 50
print '新增名片'
# 1.提示使用者輸入名片的詳細資訊
name_str = raw_input('請輸入姓名:')
phone_str = raw_input('請輸入電話:')
qq_str = raw_input('請輸入QQ:')
email_str = raw_input('請輸入郵箱:')
# 2.使用使用者輸入的資訊建立一個名片字典
card_dict = {'name_str': name_str,
'phone_str': phone_str,
'qq_str': qq_str,
'email_str': email_str}
# 3.將名片字典新增到列表中
card_list.append(card_dict) # 把一個字典追加到一個列表中
print card_list
# 4.提示使用者新增成功
print '新增%s 的名片成功' % name_str
def show_all():
"""顯示所有名片"""
print '-' * 50
print '顯示所有名片'
# 判斷是否存在名片記錄,如果沒有,提示使用者並且返回
if len(card_list) == 0:
print '當前沒有任何的名片記錄,請使用新增功能新增名片'
# return 可以返回一個函式的執行結果
# 下方的程式碼不會被執行
# 如果return後面沒有任何的內容,表示會返回到呼叫函式的位置
# 並且不返回任何結果
return
# 打印表頭
for name in ["姓名", "電話", "QQ", "郵箱"]:
print name,
print ''
# 列印分隔線
print '=' * 50
# 遍歷名片列表依次輸出字典資訊
for card_dict in card_list:
# print card_dict
print '%s\t\t%s\t\t%s\t\t%s' % (card_dict['name_str'],
card_dict['phone_str'],
card_dict['qq_str'],
card_dict['email_str'])
def search_card():
"""搜尋名片"""
print '-' * 50
print '搜尋名片'
# 1.提示使用者輸入要搜尋的姓名
find_name = raw_input('請輸入要搜尋的姓名:')
# 2.遍歷名片列表,查詢要搜尋的姓名,如果沒有找到,需要提示使用者
for card_dict in card_list:
if card_dict['name_str'] == find_name:
print '姓名 電話 QQ 郵箱'
print '=' * 50
print '%s %s %s %s' % (card_dict['name_str'],
card_dict['phone_str'],
card_dict['qq_str'],
card_dict['email_str'])
# TODO 針對找到的名片記錄執行修改和刪除的操作
# 在我們的日常編寫程式中,如果一個函式的程式碼太多,閱讀和編寫都是一件困難的事情,而在開發中,可以針對一個具體獨立的功能來封裝一個函式,由這個函式來處理具體的操作,這樣就能保證每個函式中的程式碼清晰明瞭,功能明確
deal_card(card_dict)
break
else:
print '抱歉,沒有找到%s' % find_name
def deal_card(find_dict):
print find_dict
action_str = raw_input('請選擇要執行的操作 '
'[1] 修改 [2] 刪除 :')
# 替換已經存在的鍵值對
if action_str == '1':
find_dict['name_str'] = input_card_info(find_dict['name_str'], '姓名:')
find_dict['phone_str'] = input_card_info(find_dict['phone_str'], '電話:')
find_dict['qq_str'] = input_card_info(find_dict['qq_str'], 'QQ:')
find_dict['email_str'] = input_card_info(find_dict['email_str'], '郵箱:')
print '修改名片成功!!!'
elif action_str == '2':
card_list.remove(find_dict)
print '刪除名片成功!!!'
def input_card_info(dict_value, tip_message):
"""
:param dict_value:字典中原有的值
:param tip_message:輸入的提示文字
:return:如果使用者輸入了內容,就返回內容,負責返回字典中原有的值
"""
# 1.提示使用者輸入內容
result_str = raw_input(tip_message)
# 2.針對使用者的輸入進行判斷,如果使用者輸入了內容,直接返回結果
if len(result_str) > 0:
return result_str
# 3.如果使用者沒有輸入內容,返回‘字典中原有的值’
else:
return dict_value