元組字典字符串管理

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

![這裏寫圖片描述](https://img-blog.csdn.net/20180719160517501?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RyZWFtZXJfeGl4aXhp/font/5a6L5L2T/fonPython
**

字符串

**

字符串是 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>:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章