簡明Python教程自學筆記——命令行通信錄

【前言】學習Python已經有一段時間了,相關的書籍資料也下載了很多,可是沒有一本完整的看完,也沒有編出一個完整的程序。今天下午比較悠閒就把《簡明Python教程》看了一遍,而後根據書裏面提的要求編寫了一段命令行通信錄的小程序。下面是編寫的思路以及代碼,歡迎感興趣的同窗交流探討。小程序

1.目標

編寫一個命令行通信錄程序,能夠添加、查詢、刪除通信錄好友及電話學習

2.實現方法

  • 建立一個類來表示一我的的信息。使用字典存儲每一個人的對象,名字做爲鍵。
  • 使用pickle模塊永久地把這些對象存儲下來。
  • 使用字典內建的方法添加、刪除修改人員信息。

3.思惟導圖

4.編寫僞代碼

# 1.建立字典用來存儲通信錄信息
# 2.建立人員類,包含姓名、關係、電話三個屬性
# 3.建立操做類,包含增長、查詢、刪除人員,退出,保存並退出五個方法
# 4.程序運行
# 5.判斷通信錄文件是否存在
# 6.若是存在,將文件讀取到personDictionary字典中
# 7.若是不存在,提示並建立
# 8.while循環等待讀取指令
    # 9.若是指令爲addperson,添加通信錄人員
    # 10.若是指令爲delperson,刪除通信錄人員
    # 11.若是指令爲search,查找通信錄人員
    # 12.若是指令爲quit,不保存退出程序
    # 13.若是指令爲sq,保存更改並退出程序

5.根據僞代碼編寫代碼

import pickle as p
import os

# 1.建立字典用來存儲通信錄信息
personDictionary= {'name':{'relationship':'','tel':''}}
relationshipList=['家人','朋友','同事']

# 2.建立人員類,包含姓名、關係、電話三個屬性
class Person:
    def __init__(self,name,relationship= relationshipList[1],tel='None'):
        personDictionary[name]= {'relationship':relationship,'tel':tel}
# 3.建立操做類,包含增長、查詢、刪除人員,退出,保存並退出五個方法
class Operation:
    def Addperson():
        addname= input('請輸入姓名:')
        addrelationship= int(input('請選擇分組(0:家人,1:朋友,2:同事):'))
        addtel= input('請輸入電話:')
        Person(addname,relationshipList[addrelationship],addtel)
    def Delperson():
        name= input('請輸入要刪除的聯繫人姓名:')
        del personDictionary[name]
    def Search():
        name= input('請輸入要查找的聯繫人的姓名:')
        if name in personDictionary:
            print('姓名:%s,關係:%s,電話:%s' %(name,personDictionary[name]['relationship'],personDictionary[name]['tel']))
        else:
            print('聯繫人不存在。')
    def Quit():
        running= False
    def SaveQuit():
        f= open(addressbookFile,'wb')
        p.dump(personDictionary,f)
        f.close()
        running= False
# 4.程序運行
running= True
# 5.判斷通信錄文件是否存在
addressbookFile= 'addressbook.data'
# 6.若是存在,將文件讀取到personDictionary字典中
if os.path.exists(addressbookFile):
    f= open(addressbookFile,'rb')   
    personDictionary= p.load(f)
# 7.若是不存在,提示並建立
else:
    jCommand= input('未找到通信錄文件,是否建立?yes/no ')
    if jCommand== 'yes':
        f= open(addressbookFile,'wb')
        p.dump(personDictionary,f)
        f.close()
    elif jCommand== 'no':
        running= False
# 8.while循環等待讀取指令
while running:
    command= input('請輸入指令:')
    # 9.若是指令爲addperson,添加通信錄人員
    if command== 'addperson':
        Operation.Addperson()
        continue
    # 10.若是指令爲delperson,刪除通信錄人員
    elif command== 'delperson':
        Operation.Delperson()
        continue
    # 11.若是指令爲search,查找通信錄人員
    elif command== 'search':
        Operation.Search()
        continue
    # 12.若是指令爲quit,不保存退出程序
    elif command== 'quit':
        Operation.Quit()
        break
    # 13.若是指令爲sq,保存更改並退出程序
    elif command== 'sq':
        Operation.SaveQuit()
        break
    else:
        print('未找到指令!')
        continue

6.演示

Python3 addressbook.py 
請輸入指令:search
請輸入要查找的聯繫人的姓名:zhangsan
聯繫人不存在。
請輸入指令:addperson
請輸入姓名:zhangsan
請選擇分組(0:家人,1:朋友,2:同事):1
請輸入電話:1234567
請輸入指令:search
請輸入要查找的聯繫人的姓名:zhangsan
姓名:zhangsan,關係:朋友,電話:1234567
請輸入指令:sq
$ Python3 addressbook.py 
請輸入指令:search
請輸入要查找的聯繫人的姓名:zhangsan
姓名:zhangsan,關係:朋友,電話:1234567
請輸入指令:addperson
請輸入姓名:lisi
請選擇分組(0:家人,1:朋友,2:同事):1
請輸入電話:1234567
請輸入指令:q
未找到指令!
請輸入指令:quit
$ Python3 addressbook.py 
請輸入指令:search
請輸入要查找的聯繫人的姓名:lisi
聯繫人不存在。
請輸入指令:search
請輸入要查找的聯繫人的姓名:zhangsan
姓名:zhangsan,關係:朋友,電話:1234567
請輸入指令:quit

本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。

相關文章
相關標籤/搜索