我正在做埃里克·马特写的Python速成教程,我正在做练习6-9,叫做“最喜欢的地方”。当我尝试这段代码时,我得到了这个错误列表:‘AttributeError’对象没有'title‘属性
favourite_places = {
'mum': ['hong kong', 'orkney'],
'dad': ['slovenia', 'the alps', 'scotland highlands'],
'james': 'hong kong',
}
for name, place in favourite_places.items():
print(name.title() + "'s favourite places are " + place.title())但我将它与本练习的答案代码进行了比较,我不知道我做错了什么。这是答案中的代码,
favorite_places = {
'eric': ['bear mountain', 'death valley', 'tierra del fuego'],
'erin': ['hawaii', 'iceland'],
'ever': ['mt. verstovia', 'the playground', 'south carolina']
}
for name, places in favorite_places.items():
print("\n" + name.title() + " likes the following places:")
for place in places:
print("- " + place.title())在答案中,他放入了place.title(),它没有得到错误,但当我这样做时,它得到了错误。如果你能帮上忙,谢谢
发布于 2020-05-25 03:48:40
你的问题在这里,因为你错过了这个:
for place in places:
print("- " + place.title())places是list,list中的place是str。title()属性仅适用于str。所以当你这样做的时候:
for name, place in favourite_places.items():
print(name.title() + "'s favourite places are " + place.title())您需要遍历place,以便在其中的str上调用title()。
如下所示:
for name, place in favourite_places.items():
print(name.title() + "'s favourite places are ")
for p in place:
print(p.title())您还需要使james value成为一个1元素列表才能正常工作:
favourite_places = {
'mum': ['hong kong', 'orkney'],
'dad': ['slovenia', 'the alps', 'scotland highlands'],
'james': ['hong kong'],
}最后,确保你是小心的缩进。我假设您在代码中正确地缩进了它,并且只是错误地将它复制到堆栈中,但是您的print语句需要缩进,以便它出现在循环中。
发布于 2020-05-25 03:48:44
你可以试试
favourite_places = {
'mum': ['hong kong', 'orkney'],
'dad': ['slovenia', 'the alps', 'scotland highlands'],
'james': 'hong kong',
}
for name, place in favourite_places.items():
print(name.title() + "'s favourite places are \n-{}\n".format( "\n-".join([i.title() for i in place]) if isinstance(place, list) else place.title() + "\n"))问题是“妈妈”和“爸爸”是list和list没有标题,所以你需要遍历它们的每一项并调用title方法。
发布于 2020-05-25 03:49:50
两个主要问题:
list类型,在第三个项目中为str类型。这使得不可能以同样的方式对待它们。将"hong kong"值固定为列表(只有一个元素),并在代码中包含两个嵌套循环。
https://stackoverflow.com/questions/61991390
复制相似问题