我要在Python中創建一個電話簿應具備以下功能:Python的更新別名和家長
- 添加名稱數量 - 增加了數量和名字典。名稱必須是唯一的,也是數字。
- 查找名 - 打印相關名
- 別名名NEWNAME數 - 允許名被搜索從NEWNAME
- 變化名稱數量 - 更改相關的數字與現有的名到數
- 戒 - 退出程序
運行的程序應該是這樣的:
telebok> add peter.forsberg 12345
telebok> lookup peter.forsberg
12345
telebok> alias peter.forsberg foppa
telebok> lookup foppa
12345
telebok> alias foppa MR21
telebok> change MR21 67890
telebok> lookup peter.forsberg
67890
我得到的一切,除了換個工作:
def adressbook():
telebook = {"jacob.engert":"8472923777", "nisse":"092563243"}
while True:
book = raw_input("telebook> ").lower()
lista = book.split()
if "add" in lista[0]:
n = lista[1]
x = lista[2]
if x in telebook.values():
print "Number already exists!"
elif n in telebook:
print "Name already exists!"
else:
telebook[n] = x
print telebook
elif "lookup" in lista[0]:
n = lista[1]
if n in telebook:
print n, "", telebook[n]
elif n.isdigit():
print "Type only characters!"
else:
print "This person does not exist!"
elif "alias" in lista[0]:
n = lista[1]
alias = lista[2]
if n in telebook:
v = telebook.get(n)
telebook[alias] = v
elif "change" in lista[0]:
key = lista[1]
value = telebook.get(key)
newvalue = lista[2]
for key, value in telebook.items():
telebook.update({key:newvalue})
print telebook
所以,當我更新的別名,我想要更新原件,但我得到這個結果:
>>> adressbook()
telebook> add ove 345347657
{'jacob.engert': '8472923777', 'ove': '345347657', 'nisse': '092563243'}
telebook> alias ove mr.o
telebook> lookup mr.o
mr.o 345347657
telebook> change mr.o 534523234
{'mr.o': '534523234', 'jacob.engert': '8472923777', 'ove': '345347657', nisse': '092563243'}
{'mr.o': '534523234', 'jacob.engert': '534523234', 'ove': '345347657', 'nisse': '092563243'}
{'mr.o': '534523234', 'jacob.engert': '534523234', 'ove': '534523234', 'nisse': '092563243'}
{'mr.o': '534523234', 'jacob.engert': '534523234', 'ove': '534523234', 'nisse': '534523234'}
telebook>
所以我的問題是,如何才能讓這個當我改變數的別名,原來的數量也將發生變化?
爲什麼你使用你的病情'in'爲'if's?這樣'xaddy'的輸入就可以工作。使用普通的''==相等運算 – Pynchia
另外,請學習如何使用'.get'方法上的字典。如果在密鑰不存在的情況下爲其提供返回值,它會使生活變得更加簡單。 – Pynchia