1. 程式人生 > >Python練習題(2)

Python練習題(2)

題目:

根據本題中的資訊表,設計一個字典結構,並完成資訊的查詢和儲存功能。

編號 姓名 性別 部門
201 張三 銷售
302 李四 設計
503 王紅 廣告
504 趙穎 廣告
205 韓方 銷售
306 魏源 設計

(1)設計一個字典,要求能以最方便的形式查詢出每個部門所包含的人員。
(2)改進字典結構的設計,在問題1的基礎上輸入編號即可查出人員資訊。
(3)寫一個函式,可以向字典新增資料。

分析:

首先,以編號為key,以姓名、性別、部門為value,將列表形式儲存到字典。

mydict = {"201": ["201", "張三", "男", "銷售"], "302": ["302", "李四", "男", "設計"], "503": ["503", "王紅", "男", "廣告"],
          "504": ["504", "趙穎", "女", "廣告"], "205": ["205", "韓方", "女", "銷售"], "306": ["306", "魏源", "男", "設計"]}

使用字串menustr儲存選單:

choice = -1                      # 初始化choice
menustr = "" # 初始化menustr menustr += "\n1:增加資訊" menustr += "\n2:查詢資訊" menustr += "\n3:部門人員查詢" menustr += "\n0:退出系統"

while迴圈輸出選單,進行輸入輸出操作時要進行異常處理,捕捉異常可以使用try/except語句,try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常資訊並處理。

while choice != 0:
    print menustr
    try:
        choice = input("請選擇你需要的功能:"
) except IOError: print "對不起,輸入錯誤!" else: if choice == 1: add(mydict) elif choice == 2: find_by_id(mydict) elif choice == 3: print "部門人員查詢" find_by_emp(mydict) elif choice == 0: print "成功退出系統!" break else: print "輸入錯誤,請重新輸入!"

增加資訊函式:

def add(mydict):
    try:
        print "增加資訊"
        a = raw_input("編號:")
        b = raw_input("姓名:")
        c = raw_input("性別:")
        d = raw_input("部門:")
    except IOError:
        print "對不起,輸入錯誤!"
    else:
        adddict = {a: [a, b, c, d]}  # 新建字典,用來儲存輸入的值
        mydict.update(adddict)  # 更新mydict字典,將新字典內容存入mydict字典
        print "資訊增加成功:"
        # print len(mydict)                      測試用,檢視輸出字典元素的個數,判斷是否新增成功
        table = PrettyTable()  # 使用prettytable顯示錶格
        table.field_names = ["編號", "姓名", "性別", "部門"]
        table.add_row(mydict.get(a))
        print table

按編號查詢函式:

def find_by_id(mydict):
    try:
        find_id = raw_input("查詢id:")
    except IOError:
        print "對不起,輸入錯誤!"
    else:
        if mydict.has_key(find_id):             # 判斷鍵是否存在於字典中,如果在,則進行資料輸出
            table = PrettyTable()
            table.field_names = ["編號", "姓名", "性別", "部門"]
            table.add_row(mydict.get(find_id))
            print table                        # 輸出表
        else:                                  # 如果鍵不在字典中,則輸出提示資訊
            print "對不起,查詢的ID不在資料庫中!"

按部門查詢函式:

def find_by_emp(mydict):
    emp_date = {}  # 新建一個字典,用來儲存查詢的資訊
    try:
        findemp = raw_input("輸入部門名稱:")
    except IOError:
        print "對不起,輸入錯誤!"
    else:
        for (key, value) in mydict.items():    # 遍歷字典mydict的列表(list)
            if findemp in value:               # 在list中查詢到輸入的值
                emp_date[key] = value           # 將其對應的value存入到新字典emp_date中
        if emp_date != {}:                     # 判斷是否找到對應的值,如果找到,則列表顯示,否則返回提示資訊
            table = PrettyTable()
            table.field_names = ["編號", "姓名", "性別", "部門"]
            for i in emp_date.items():         # 迴圈新增多行資訊
                table.add_row(i[1][:])         # 輸出列表中每一段的第二個字串中所有資訊
            print table
        else:                                 # 找不到對應值,返回提示資訊
            print "對不起,查詢不到該部門!"

答案:
practice.py

# coding: utf-8

choice = -1                      # 初始化choice
menustr = ""                     # 初始化menustr
menustr += "\n1:增加資訊"
menustr += "\n2:查詢資訊"
menustr += "\n3:部門人員查詢"
menustr += "\n0:退出系統"

mydict = {"201": ["201", "張三", "男", "銷售"], "302": ["302", "李四", "男", "設計"], "503": ["503", "王紅", "男", "廣告"],
          "504": ["504", "趙穎", "女", "廣告"], "205": ["205", "韓方", "女", "銷售"], "306": ["306", "魏源", "男", "設計"]}

while choice != 0:
    print menustr
    try:
        choice = input("請選擇你需要的功能:")
    except IOError:
        print "對不起,輸入錯誤!"
    else:
        if choice == 1:
            add(mydict)
        elif choice == 2:
            find_by_id(mydict)
        elif choice == 3:
            print "部門人員查詢"
            find_by_emp(mydict)
        elif choice == 0:
            print "成功退出系統!"
            break
        else:
            print "輸入錯誤,請重新輸入!"

practice_fun.py

# coding: utf-8
from prettytable import PrettyTable


def add(mydict):
    try:
        print "增加資訊"
        a = raw_input("編號:")
        b = raw_input("姓名:")
        c = raw_input("性別:")
        d = raw_input("部門:")
    except IOError:
        print "對不起,輸入錯誤!"
    else:
        adddict = {a: [a, b, c, d]}  # 新建字典,用來儲存輸入的值
        mydict.update(adddict)  # 更新mydict字典,將新字典內容存入mydict字典
        print "資訊增加成功:"
        # print len(mydict)                      測試用,檢視輸出字典元素的個數,判斷是否新增成功
        table = PrettyTable()  # 使用prettytable顯示錶格
        table.field_names = ["編號", "姓名", "性別", "部門"]
        table.add_row(mydict.get(a))
        print table


def find_by_id(mydict):
    try:
        find_id = raw_input("查詢id:")
    except IOError:
        print "對不起,輸入錯誤!"
    else:
        if mydict.has_key(find_id):             # 判斷鍵是否存在於字典中,如果在,則進行資料輸出
            table = PrettyTable()
            table.field_names = ["編號", "姓名", "性別", "部門"]
            table.add_row(mydict.get(find_id))
            print table                        # 輸出表
        else:                                  # 如果鍵不在字典中,則輸出提示資訊
            print "對不起,查詢的ID不在資料庫中!"


def find_by_emp(mydict):
    emp_date = {}  # 新建一個字典,用來儲存查詢的資訊
    try:
        findemp = raw_input("輸入部門名稱:")
    except IOError:
        print "對不起,輸入錯誤!"
    else:
        for (key, value) in mydict.items():    # 遍歷字典mydict的列表(list)
            if findemp in value:               # 在list中查詢到輸入的值
                emp_date[key] = value           # 將其對應的value存入到新字典emp_date中
        if emp_date != {}:                     # 判斷是否找到對應的值,如果找到,則列表顯示,否則返回提示資訊
            table = PrettyTable()
            table.field_names = ["編號", "姓名", "性別", "部門"]
            for i in emp_date.items():         # 迴圈新增多行資訊
                table.add_row(i[1][:])         # 輸出列表中每一段的第二個字串中所有資訊
            print table
        else:                                 # 找不到對應值,返回提示資訊
            print "對不起,查詢不到該部門!"

相關推薦

python練習題2

[1] %d pre div 數字 while put pan 一個 #給出一個日子,和一個數字(可以是正數或負數) #算出這個日子加上這個天數後是哪個日子 def day(): date=raw_input("(MM/DD/YY)>>")

python 練習題2

python常用函數考察: dict(zip(('a','b','c','d','e'),(1,2,3,4,5))) range(10) sorted([i for i in range(10)]) { i:i

Python練習題2:提取列表中的所有數字,包括字串中的數字 target = ['25',5,'a',1,2,'b',4,5,'A','python','3.6']

方法一:使用type(eval())函式判斷型別,再用try-except-else處理異常 1 def num_trans(): 2 """使用eval()函式判斷""" 3 target = ['25',5,'a',1,2,'b',4,5,'A','python','3.6'

Python練習題(2)

題目: 根據本題中的資訊表,設計一個字典結構,並完成資訊的查詢和儲存功能。 編號 姓名 性別 部門 201 張三 男 銷售 302 李四 男 設計 503 王紅 女

python 基礎 2.8 python練習題

奇數 -h span enc .py xrange .... pac spa python 練習題: #/usr/bin/python #coding=utf-8 #@Time :2017/10/26 9:38 #@Auther :liuzhenchuan #@Fi

python練習題,寫一個方法 傳進去列表和預期的value 求出所有變量得取值可能性(例如list為[1,2,3,4,5,6,12,19],value為20,結果是19+1==20只有一種可能性),要求時間復雜度為O(n)

num bubuko com pri def 代碼 data- 取值 .com 題目:(來自光榮之路老師)a+b==valuea+b+c=valuea+b+c+d==valuea+b+c+d+...=valuea和b....取值範圍都在0-value寫一個方法 傳進去列

python練習題之 貓2

class Cat: def __init__(self): # 建構函式(屬性有 姓名 年齡 顏色) self.name = None self.age = None self.color = None def run(self):

python基礎2-靜態方法和類方法

變量 img 靜態 訪問 func title 改變 參數 code 1. 類方法 是類對象所擁有的方法,需要用修飾器@classmethod來標識其為類方法,對於類方法,第一個參數必須是類對象,一般以cls作為第一個參數(當然可以用其他名稱的變量作為其第一個參數,但是大部

零基礎學python-4.2 其它內建類型

介紹 src one 一個 tex == water 文件 div 這一章節我們來聊聊其它內建類型 1.類型type 在python2.2的時候,type是通過字符串實現的,再後來才把類型和類統一 我們再次使用上一章節的圖片來說明一些問題 我們通

Python教程(2.4)——字符串

運算 this sca 新的 也會 註意 詳細 book 用兩個 2.2節講過,Python中有字符串類型。在Python中,字符串用‘或"括起,例如‘abc‘、"qwerty"等都是字符串。註意‘和"並不是字符串的內容。 ASCII(American Standard

python練習題

python 練習題表內容有以下列:id,name,age,phone,dept,enroll_date//db1 數據庫名 //emp表名 數據庫表名和對應文件要關聯上。通過PYTHON腳本模擬實現以下SQL語句:增刪改查sql>select sql>select * from db1.emp

python-基礎2-變量、輸入輸出、條件語句

align table 到你 類型轉換 enter input 不能 輸入密碼 條件判斷 存東西所用 #定義變量 name=‘feifei‘#定義變量,字符串 age=18.9#整型或者小數定義變量不需要加引號 print(name) print(age) name2="w

python筆記2-變量

sse imp lob lam cell hat bsp adding 第一個字符 變量 存東西所用 #定義變量 name=‘feifei‘#定義變量,字符串 age=18.9#整型或者小數定義變量不需要加引號 print(name) print(age) name2="w

Python 語法2

doc turn bsp 功能 函數 文字 關鍵詞 哈哈哈 sys 文檔字符串,這個只能是用於緊跟函數第二行的內容。 輸出文檔說明的部分,代碼格式是 函數名稱.(dot)__(雙下劃線)doc__(雙下劃線) /////////////////////////////

[華為機試練習題]2.大數求和

cout views 華為上機 大數 高位到低位 pretty 類別 ade iostream 題目二[大數求和] 描寫敘述: 給定兩個非常大的正整數A和B。位數在50至100之間。求C=A+B; 題目類別: 字符串 難度: 中級

python version 2.7 required,which was not found in the registry

.html except http nco com name desc log all # # script to register Python 2.0 or later for use with win32all # and other extensions that

第1章第2練習題2 非遞歸刪除指定結點

ces var con () printf length markdown parent div 問題描寫敘述 在帶頭結點的單鏈表L中。刪除全部值為x的結點,並釋放其空間,假設值為x的結點不唯一,試編寫算法實現以上的操作 算法思想

安裝第三方庫 報錯Python version 2.7 required, which was not found in the registry

try 三方庫 64位 req not 安裝 window 是我 found 我的Windows 系統是64位 這個問題有人說是註冊表沒有 ,手動註冊了一下就好了,但是我註冊的時候運行報錯。 那麽我的做法是: 刪掉本機所有安裝過得python , 1、 先進入控制面板,刪除

python基礎2

python基礎2python基礎2 ####字符串的基本操作###字符串切片: >>> s = ‘hello‘>>> s[2:5]‘llo‘>>> s[0:5]‘hello‘>>> s[3:]‘lo‘>>> s[:3]

python Day03-2

format input python welcom and mat jea -s for 編寫登陸接口輸入用戶名密碼認證成功後顯示歡迎信息輸錯三次後鎖定user = "jean"pwd = "123456"count = 0while count < 3: c