Python 元組
Python的元組與列表類似,不同之處在於元組的元素不能修改。
元組使用小括號,列表使用方括號。
元組創建很簡單,只需要在括號中添加元素,並使用逗號隔開即可。
info_tuple = ('yuhan',1.8,'小仙女','yuhan')
# 1.取值,取索引
print info_tuple[0]
print info_tuple.index('yuhan')
# 2.取個數
print info_tuple.count('yuhan')
# 3.統計元組中包含元素的個數
print len(info_tuple)
元組中定義一個有一個元素的元組
info_tuple=(1,)
info_tuple=(1)# 元組爲int整形
"""
info_tuple = ('yuhan',1.80,'小仙女')
print '她叫 %s,身高爲: %.2f ,是個 %s' %(info_tuple)
**
Python 字典(Dictionary)
**
字典是另一種可變容器模型,且可存儲任意類型對象。
字典的每個鍵值 key=>value 對用冒號 : 分割,每個鍵值對之間用逗號 , 分割,整個字典包括在花括號 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
鍵一般是唯一的,如果重複最後的一個鍵值對會替換前面的,值不需要唯一。
dict = {‘a’: 1, ‘b’: 2, ‘b’: ‘3’}; >>> dict[‘b’] ‘3’ >>> dict {‘a’: 1, ‘b’: ‘3’}
值可以取任何數據類型,但鍵必須是不可變的,如字符串,數字或元組。
一個簡單的字典實例:
dict = {‘Alice’: ‘2341’, ‘Beth’: ‘9102’, ‘Cecil’: ‘3258’}
也可如此創建字典:
dict1 = { ‘abc’: 456 }; dict2 = { ‘abc’: 123, 98.6: 37 };
# 定義一個字典,用{}
# 字典是一個無序的數據集合,當輸出字典時與定義的順序無關
message = {'name':'yuhan',
'height':1.80,
'weight':40.0,
'sex':'girl'}
print message
# 取值
print message['name']
print message['weight']
# 增加/修改
message['weight'] = '45.0'
print message
message['age'] = 18
# 刪除pop,在列表中pop()可以爲空,因爲他默認彈出最上面的元素
# 而字典中pop()中是不被允許的,因爲字典是無序排列的
message.pop('name')
print message
message = {'name':'yuhan',
'height':1.80,
'weight':40.0,
'sex':'girl'}
# 1.統計鍵值對的數量
print len(message)
# 2.合併字典,即更新,每一個建對應一個值,
# 當合並的字典中有相同的鍵時,更新原字典內容,修改
# 當合並的字典中有不同的鍵時,添加到原字典
temp_dict = {'height':2.10,'hobby':'zhai'}
message.update(temp_dict)
print message
# 清空字典
message.clear()
print message
# 鍵 - 鍵值 #索引輸出
message = {'name':'yuhan',
'height':1.80,
'weight':40.0,
'sex':'girl'}
for K in message:
print '%s - %s' %(K,message[K])
將列表中的元素設置爲字典型:
dict_list = [{'name': 'yuhan', 'weight': 40.0, 'height': 2.1 },
{'name': 'weiwei', 'weight': 45.0, 'height': 1.7},
{'name': 'ting', 'weight': 40.0, 'height': 1.8}]
for L in dict_list:
print L
for M in dict_list[1]:
print M
字符串
**
字符串是 Python 中最常用的數據類型。我們可以使用引號(‘或”)來創建字符串。
創建字符串很簡單,只要爲變量分配一個值即可
hello_str = 'hello python '
# 1.統計字符串的長度
print len(hello_str)
# 2.統計某一個小字符串出現的次數
print hello_str.count('o')
print hello_str.count('ww')
# 3.某一個子字符串出現的位置
print hello_str.index('llo')
# 使用index如果子字符串不存在,程序回報錯
print hello_str.index('ww')
# 1.判斷字符串是否只包含數字
num_str = '1'
print num_str
print num_str.isdigit()
# 2.判斷是否以指定的字符串開始
hello_str = 'hello python'
print hello_str.startswith('he')
# 3.判斷字符串是否以指定的字符串結尾
print hello_str.endswith('on')
# 4.查找指定的字符串,返回的是一個索引
print hello_str.find('p')
# 如果查找的指定字符串不存在,程序不會報錯返回值是-1
print hello_str.find('ww')
# 5.替換字符串replace(old,new)
print hello_str.replace('hello','hi')
print hello_str
# 6.判斷字符串是否含有空格,字符串中包含/t 或者 /n 都是包含空格的
null = ''
print null.isspace()
格式:
字符串/列表/元組[開始索引:結束索引:步長(有跳躍有間隔的對字符串切片)]
倒敘索引:如果一個字符串/列表/元組很長很長,使用倒敘索引很方便
最後一個索引的倒敘索引是:-1
1.指定的左開右閉型
從起始位置開始,到結束位置的前一位(不包含結束位本身)
2.從頭開始,開始索引數字可以省略,冒號不能省略
3.到末尾結束,結束索引數字可以省略,冒號不能省略
4.步長默認爲1
num_str = '0123456789'
print num_str
# 切片
# 1.取2-4;[2:5]爲索引,前開後閉
print num_str[2:5]
# 2.從索引爲2一直到最後
print num_str[2:]
# 3.從0到6
print num_str[:7]
# 4.輸出所有
print num_str[:]
# 5.輸出步長爲2,從1-9
print num_str[1:10:2]
# 輸出全部,步長爲2
print num_str[::2]
# 6.輸出最後一位,默認最後一位索引爲-1,倒數第二位爲-2
print num_str[-1]
print num_str[-2]
# 7.輸出倒數第三位到結束
print num_str[-3:]
# 8.輸出2到倒數第二位
print num_str[2:-2]
寫一個名片管理系統:
建立一個主函數:card_main.py
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_tools.py
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
歡迎界面:
測試:
1.添加名片<1>:
2.顯示所有名片<2>:
3.搜索並修改名片<3>:
4.測試修改是否成功<2>:
5.退出系統<0>: