people={? ? "alice":{? ? ? ? "phone":"2341",? ? ? ? "addr":"for drive 23"? ? },? ? "beth":{? ? ? ? "phone":"9012",? ? ? ? "addr":"bsr street 42"? ? },? ? "cecil":{? ? ? ? "phone":"3158",? ? ? ? "addr":"baz avenue 90"? ? }}#針對(duì)電話(huà)號(hào)碼和地址使用的描述性標(biāo)簽,會(huì)在打印時(shí)候用到labels={? ? "phone":"phone number",? ? "addr":"address"}name=raw_input("Name:")#查找電話(huà)號(hào)碼還是地址?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])提示錯(cuò)誤為: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貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超1個(gè)贊
1、if name in people等價(jià)于if name in people.keys(),
你的代碼里面people.keys()有:"alice"、"beth"、"cecil"。這3個(gè)都是string類(lèi)型,string類(lèi)型沒(méi)有l(wèi)abels這個(gè)屬性。
這也就是你的報(bào)錯(cuò)信息:'str' object has no attribute 'labels'。
string類(lèi)型本身就沒(méi)有l(wèi)abels這個(gè)屬性,別告訴我你連這個(gè)都不知道。所以你后面引用name.labels[key]就會(huì)報(bào)錯(cuò)。
2、還有你print的參數(shù)個(gè)數(shù)不對(duì),個(gè)人不太喜歡%,偏向于.format()。
我大致知道你想干嘛,就是輸入姓名和p、a輸出,結(jié)果是吧,最后幾行你改下:
#?使用正確的鍵: 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])
個(gè)人強(qiáng)烈建議,python代碼不要寫(xiě)在一行,縮進(jìn)才是它的規(guī)范。
添加回答
舉報(bào)
0/150
提交
取消