亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python代碼問題之字典

python代碼問題之字典

Hankong 2016-10-05 23:25:20
people={? ? "alice":{? ? ? ? "phone":"2341",? ? ? ? "addr":"for drive 23"? ? },? ? "beth":{? ? ? ? "phone":"9012",? ? ? ? "addr":"bsr street 42"? ? },? ? "cecil":{? ? ? ? "phone":"3158",? ? ? ? "addr":"baz avenue 90"? ? }}#針對電話號碼和地址使用的描述性標簽,會在打印時候用到labels={? ? "phone":"phone number",? ? "addr":"address"}name=raw_input("Name:")#查找電話號碼還是地址?request=raw_input("phone number(p) or address (a)?")#使用正確的鍵:if request=="p":key="phone"if request=="a":key="addr"#如果名字是字典中的有效鍵方才打印信息:if name in people:print "%s's %s is %s."%\? ?(name.labels[key],people[name][key])提示錯誤為:File?"c:\Users\DULU\Desktop\untitled-1.py", line 32, in <module>??(name.labels[key],people[name][key])AttributeError: 'str' object has no attribute 'labels'(這是什么意思,看不懂呀)
查看完整描述

3 回答

已采納
?
longgb246

TA貢獻1條經驗 獲得超1個贊


1、if name in people等價于if name in people.keys(),

你的代碼里面people.keys()有:"alice"、"beth"、"cecil"。這3個都是string類型,string類型沒有labels這個屬性。

這也就是你的報錯信息:'str' object has no attribute 'labels'。

string類型本身就沒有labels這個屬性,別告訴我你連這個都不知道。所以你后面引用name.labels[key]就會報錯。

2、還有你print的參數個數不對,個人不太喜歡%,偏向于.format()。

我大致知道你想干嘛,就是輸入姓名和p、a輸出,結果是吧,最后幾行你改下:

#?使用正確的鍵:
if?request?==?"p":
????key?=?"phone"
if?request?==?"a":
????key?=?"addr"
#?如果名字是字典中的有效鍵方才打印信息:
if?name?in?people.keys():
????print?"%s's?%s?is?%s."?%?(name,?key,?people[name][key])
????#?你可以嘗試下面的.format()
????print?"{0}'s?{1}?is?{2}.".format(name,?key,?people[name][key])

個人強烈建議,python代碼不要寫在一行,縮進才是它的規范。

查看完整回答
1 反對 回復 2016-10-06
  • Hankong
    Hankong
    大神呀,雖然我也沒看懂你想說什么吧,還是謝謝
  • Hankong
    Hankong
    能不能在我那個基礎上幫我改一下,我看的輔導書上就是那么教的,你說的那些我還沒有學到了
  • 3 回答
  • 0 關注
  • 1927 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號