第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開發(fā)者教程

Python 進(jìn)階應(yīng)用教程

Python 進(jìn)階應(yīng)用教程
01 Python 的對象和類 02 Python 類屬性和實(shí)例屬性 03 Python類的構(gòu)造方法、析構(gòu)方法、實(shí)例方法 04 Python 類的私有屬性和私有方法 05 Python 類的繼承和多繼承 06 Python 類實(shí)戰(zhàn) 07 Python 中的迭代器實(shí)現(xiàn)原理 08 Python 中的迭代器趣味實(shí)踐 09 Python 中的生成器實(shí)現(xiàn)原理 10 Python 中的生成器趣味實(shí)踐 11 Python 中的錯(cuò)誤和異常 12 Python 中的異常處理 13 Python 中的模塊 14 Python 標(biāo)準(zhǔn)庫之 os 模塊 15 Python 標(biāo)準(zhǔn)庫之 sys 模塊 16 Python 標(biāo)準(zhǔn)庫之 math 模塊 17 Python 標(biāo)準(zhǔn)庫之 random 模塊 18 Python 標(biāo)準(zhǔn)庫之 Json 模塊 19 Python 標(biāo)準(zhǔn)庫 datetime 模塊 20 Python 中的常用第三方模塊 21 Python 中的命名空間 22 Python 中的作用域 23 Python 中的文件 IO 操作 24 Python 基礎(chǔ)實(shí)戰(zhàn) 25 Python 內(nèi)置函數(shù) 26 Python 中使用正則表達(dá)式 27 使用 Python 操作 MySQL 數(shù)據(jù)庫 28 使用 Python 操作 Mongo 數(shù)據(jù)庫 29 使用 Python 操作 Redis 數(shù)據(jù)庫 30 使用 Python 發(fā)送一封郵件 31 threading 之 Thread 的使用 32 threading 之 Lock 的基本使用 33 Python 生產(chǎn)者消費(fèi)者模型 34 Python 的內(nèi)存管理與垃圾回收 35 Python 領(lǐng)域運(yùn)用:網(wǎng)絡(luò)爬蟲 36 Python 領(lǐng)域運(yùn)用:Web 開發(fā) 37 Python 領(lǐng)域運(yùn)用:自動(dòng)化運(yùn)維 38 Python 領(lǐng)域運(yùn)用:自動(dòng)化測試

Python 類實(shí)戰(zhàn)

還是以我們之前做過的,通訊錄功能為例,這節(jié)課我們繼續(xù)對通訊錄功能使用類進(jìn)行改造:

1. 通訊錄功能簡介

編寫程序 addressBook.py 實(shí)現(xiàn)通訊錄管理系統(tǒng),通訊錄包含若干聯(lián)系人,每個(gè)聯(lián)系人包括:姓名、地址、電話 3 項(xiàng)內(nèi)容。程序提供 4 項(xiàng)基本功能:

  • 增加聯(lián)系人: 用戶輸入姓名、地址、電話等信息,將信息保存在一個(gè)列表中
  • 列出聯(lián)系人: 打印輸出所有聯(lián)系人的信息
  • 查詢聯(lián)系人: 用戶輸入聯(lián)系人姓名,打印輸出該聯(lián)系人的信息
  • 刪除聯(lián)系人: 用戶輸入聯(lián)系人姓名,從通訊錄中刪除該聯(lián)系人

通過命令行界面實(shí)現(xiàn)以上功能,程序 addressBook.py 運(yùn)行時(shí)首先打印一個(gè)菜單,如下所示:

C:\> python addressBook.py
1. create person
2. list all persons
3. query person
4. delete person
5. quit
Enter a number(1-5): 

總共有 5 個(gè)選項(xiàng),用戶輸入對應(yīng)的數(shù)字選擇相應(yīng)的功能,如下表所示:

數(shù)字選項(xiàng) 功能描述
1. create person 增加聯(lián)系人
2. list all persons 列出聯(lián)系人
3. query person 查詢聯(lián)系人
4. delete person 刪除聯(lián)系人
5. quit 退出通訊錄程序

2. 程序框架

2.1 描述單個(gè)聯(lián)系人的數(shù)據(jù)結(jié)構(gòu)

程序使用字典描述一個(gè)聯(lián)系人,假設(shè)某個(gè)聯(lián)系人的信息如下:

姓名 地址 電話
張三 南京 12306

使用字典描述該聯(lián)系人如下:

>>> person = {'name': '張三', 'address': '南京', 'phone': '12306'}
  • 字典有三個(gè)鍵:name、address、phone
  • 對應(yīng)的值分別為:張三、南京、12306

2.2 描述所有聯(lián)系人的數(shù)據(jù)結(jié)構(gòu)

程序?qū)⑺新?lián)系人信息存儲在列表中,即通訊錄是一個(gè)列表、列表的元素是字典。假設(shè)通訊錄中有兩個(gè)人,它們的信息如下所示:

姓名 地址 電話
張三 南京 12306
李四 王五 10086

本節(jié)使用面向?qū)ο蟮纳显O(shè)計(jì)方法實(shí)現(xiàn)通訊錄,使用一個(gè)類 AddressBook 描述通訊錄,類 AddressBook 的核心成員是一個(gè)列表,該列表保存了所有聯(lián)系人, 代碼如下:

class AddressBook:
    def __init__(self):
        self.persons = []

    def addPerson(person):
        self.person.append(person)

addressBook = AddressBook()
zhangSan = {'name': '張三', 'address': '南京', 'phone': '12306'}
liSi = {'name': '李四', 'address': '北京', 'phone': '10086'}
addressBook.addPerson(zhangSan)
addressBook.addPerson(lisi)
  • 在第 1 行,定義了類 AddressBook 描述通訊錄
    • 在第 3 行,定義了成員變量 persons,它是一個(gè)列表,記錄了所有的聯(lián)系人
    • 在第 5 行,定義了成員方法 addPerson,它將單個(gè)聯(lián)系人加入到聯(lián)系人列表中
  • 在第 8 行,使用類 AdressBook 創(chuàng)建一個(gè)對象
  • 創(chuàng)建兩個(gè)聯(lián)系人
    • 在第 9 行,變量 zhangSan 的類型是一個(gè)字典,描述了張三的信息
    • 在第 10 行,變量 liSi 的類型是一個(gè)字典,描述了李四的信息
  • 將聯(lián)系人添加到通訊錄中
    • 在第 11 行,將聯(lián)系人 zhangSan 添加到通訊錄中
    • 在第 12 行,將聯(lián)系人 liSi 添加到通訊錄中

2.3 類 AddressBook 的主要成員方法

分析通訊錄的功能需求,初步將程序劃分為 4 個(gè)功能模塊,如下表所示:

功能模塊 成員方法
增加聯(lián)系人 create_person
列出聯(lián)系人 list_person
查詢聯(lián)系人 query_person
刪除聯(lián)系人 delete_person

使用 4 個(gè)成員方法實(shí)現(xiàn)相應(yīng)的功能,這里先寫出成員方法的定義,暫時(shí)忽略實(shí)現(xiàn),代碼如下:

class AddressBook:
    def __init__(self):
        self.persons = []

    def create_person(self):
        pass

    def list_person(self):
        pass

    def query_person(self):
        pass

    def delete_person(self):
        pass

2.4 主控模塊

本節(jié)完成程序的主功能模塊 main,函數(shù) main 的功能邏輯如下:

  1. 獲取用戶輸入的選擇
  2. 根據(jù)用戶的選擇執(zhí)行對應(yīng)的功能
  3. 重復(fù)執(zhí)行第 1 步的操作

函數(shù) main 的實(shí)現(xiàn)代碼如下:

def get_choice():
    pass

def main():
    addressBook = AddressBook()
    while True:
        choice = get_choice()

        if choice == '1':
            addressBook.create_person()
        elif choice == '2':
            addressBook.list_person()
        elif choice == '3':
            addressBook.query_person()
        elif choice == '4':
            addressBook.delete_person()
        elif choice == '5':
            break
        else:
            print('Invalid choice') 

main()                  
  • 在第 1 行,定義了函數(shù) get_choice,該函數(shù)打印功能菜單并讀取用戶的選擇
  • 在第 4 行,定義了函數(shù) main,該函數(shù)讀取用戶選擇,并執(zhí)行相應(yīng)功能
  • 在第 5 行,使用類 AdressBook 創(chuàng)建一個(gè)對象 addressBook
  • 在第 6 行,創(chuàng)建一個(gè) while 死循環(huán)
    • 在第 7 行,使用 get_choice() 函數(shù)獲取用戶輸入的選擇
    • 在第 9 行至第 20 行,根據(jù) choice 執(zhí)行對象 addressBook 相應(yīng)的成員方法
    • 在第 18 行,如果 choice == ‘5’,則執(zhí)行 break 退出程序

2.5 獲取用戶輸入

編寫函數(shù) get_choice 獲取用戶的選擇,代碼如下:

def get_choice():
    print('1. create person')
    print('2. list all persons')
    print('3. query person')
    print('4. delete person')
    print('5. quit')
    choice = input('Enter a number(1-5):')  
    return choice
  • 在第 2 行到第 6 行,打印功能菜單
  • 在第 7 行,使用 input() 函數(shù)獲取用戶輸入的選擇
  • 在第 8 行,返回用戶的選擇 choice

3. 增加聯(lián)系人

本小節(jié)實(shí)現(xiàn)增加聯(lián)系人的功能,如下所示:

    def create_person(self):
        name = input('name: ')
        address = input('address: ')
        phone = input('phone: ')
        person = {'name': name,  'address': address, 'phone': phone}
        self.persons.append(person)
  • 在第 1 行,定義函數(shù) create_person,該函數(shù)實(shí)現(xiàn)增加聯(lián)系人的功能
  • 在第 2 行,獲取用戶輸入的 name
  • 在第 3 行,獲取用戶輸入的 address
  • 在第 4 行,獲取用戶輸入的 phone
  • 在第 5 行,根據(jù)用戶輸入的 name、address、phone 創(chuàng)建一個(gè)字典,用于描述該聯(lián)系人
  • 在第 6 行,將聯(lián)系人加入到 self.persons 中

4. 列出聯(lián)系人

本小節(jié)實(shí)現(xiàn)列出所有聯(lián)系人的功能,如下所示:

    def list_person(self):
        for person in self.persons:
            print('%s,%s,%s' % (person['name'], person['address'], person['phone']))
  • 在第 1 行,定義函數(shù) list_person,實(shí)現(xiàn)列出所有聯(lián)系人的功能
  • 在第 2 行,遍歷列表 self.persons,循環(huán)變量 self.persons 是一個(gè)字典
  • 在第 3 行,打印變量 person 的內(nèi)容

對每個(gè)聯(lián)系人打印輸出一行,假設(shè)通訊錄中已經(jīng)存儲了張三和李四兩個(gè)聯(lián)系人,輸出如下:

C:\> python addressBook.py
1. create person
2. list all persons
3. query person
4. delete person
5. quit
Enter a number(1-5): 2
張三,南京,12306
李四,北京,10086
  • 在第 7 行,用戶選擇執(zhí)行功能 2
  • 在第 8 行,打印聯(lián)系人張三的信息
  • 在第 9 行,打印聯(lián)系人李四的信息

5. 查詢聯(lián)系人

本小節(jié)實(shí)現(xiàn)查詢聯(lián)系人的功能,如下所示:

    def query_person(self):
        name = input('name: ')
        for person in self.persons:
            if person['name'] == name:
                print('%s,%s,%s' % (person['name'], person['address'], person['phone']))
  • 在第 1 行,定義函數(shù) query_person,實(shí)現(xiàn)查詢聯(lián)系人的功能
  • 在第 2 行,獲取用戶輸入的 name
  • 在第 3 行,遍歷列表 self.persons,循環(huán)變量 self.persons 是一個(gè)字典
  • 在第 4 行,如果用戶輸入的 name 和循環(huán)訪問 person 的 name 相同,則表示找到指定的 person
  • 在第 5 行,打印變量 person 的內(nèi)容

6. 刪除聯(lián)系人

本小節(jié)實(shí)現(xiàn)刪除聯(lián)系人的功能,如下所示:

    def delete_person(self):
        name = input('name: ')
        for person in self.persons:
            if person['name'] == name:
                self.persons.remove(person)
                break 
  • 在第 1 行,定義函數(shù) delete_person,實(shí)現(xiàn)刪除聯(lián)系人的功能
  • 在第 2 行,獲取用戶輸入的 name
  • 在第 3 行,遍歷列表 self.persons,循環(huán)變量 self.persons 是一個(gè)字典
  • 在第 4 行,如果用戶輸入的 name 和循環(huán)訪問 person 的 name 相同,則表示找到指定的 person
  • 在第 5 行,使用方法 self.persons.remove(person),從 self.persons 中刪除元素 person
  • 在第 6 行,退出 for 循環(huán)

7. 完整的程序

實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
class AddressBook:
    def __init__(self):
        self.persons = []

    def create_person(self):
        name = input('name: ')
        address = input('address: ')
        phone = input('phone: ')
        person = {'name': name,  'address': address, 'phone': phone}
        self.persons.append(person)

    def list_person(self):
        for person in self.persons:
            print('%s,%s,%s' % (person['name'], person['address'], person['phone']))

    def query_person(self):
        name = input('name: ')
        for person in self.persons:
            if person['name'] == name:
                print('%s,%s,%s' % (person['name'], person['address'], person['phone']))

    def delete_person(self):
        name = input('name: ')
        for person in self.persons:
            if person['name'] == name:
                self.persons.remove(person)
                break                    

def get_choice():
    print('1. create person')
    print('2. list all persons')
    print('3. query person')
    print('4. delete person')
    print('5. quit')
    choice = input('Enter a number(1-5):')  
    return choice

def main():
    addressBook = AddressBook()
    while True:
        choice = get_choice()

        if choice == '1':
            addressBook.create_person()
        elif choice == '2':
            addressBook.list_person()
        elif choice == '3':
            addressBook.query_person()
        elif choice == '4':
            addressBook.delete_person()
        elif choice == '5':
            break
        else:
            print('Invalid choice')  

main()       
運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線運(yùn)行效果