我正在做關于 Python 編程的 MOOC,并且很難找到解決問題集的方法。我希望你能提供一些幫助。
問題陳述是:這個問題使用與上一個問題相同的 Pet、Owner 和 Name 類。
在這個例子中,您將列印一個列出單個主人所有寵物的字串,而不是列印一個列出單個寵物所有者的字串。
撰寫一個名為 get_pets_string 的函式。get_pets_string 應該有一個引數,一個 Owner 的實體。get_pets_string 應該根據以下格式回傳該所有者的寵物串列:
David Joyner 的寵物是:Boggle Joyner、Artemis Joyner
class Name:
def __init__(self, first, last):
self.first = first
self.last = last
class Pet:
def __init__(self, name, owner):
self.name = name
self.owner = owner
class Owner:
def __init__(self, name):
self.name = name
self.pets = []
在此處添加您的 get_pets_string 函式!
這是我的代碼:
def get_pets_string(Owner):
result = Owner.name.first " " Owner.name.last "'s" " " "pets are:" Pet.name
return result
我的代碼出現以下錯誤:
AttributeError: type object 'Pet' has no attribute 'name'
Command exited with non-zero status 1
下面是一些將測驗您的功能的代碼行。您可以更改變數的值以使用不同的輸入測驗您的函式。
如果您的函式正常作業,最初將列印:David Joyner's pets are: Boggle Joyner, Artemis Joyner Audrey Hepburn's pets are: Pippin Hepburn
owner_1 = Owner(Name("David", "Joyner"))
owner_2 = Owner(Name("Audrey", "Hepburn"))
pet_1 = Pet(Name("Boggle", "Joyner"), owner_1)
pet_2 = Pet(Name("Artemis", "Joyner"), owner_1)
pet_3 = Pet(Name("Pippin", "Hepburn"), owner_2)
owner_1.pets.append(pet_1)
owner_1.pets.append(pet_2)
owner_2.pets.append(pet_3)
print(get_pets_string(owner_1))
print(get_pets_string(owner_2))
您能否就我的代碼做得不對的地方提供一些指導?
uj5u.com熱心網友回復:
在您的代碼中,name是Pet類的實體變數。所以,要訪問你需要一個類name的實體。但是在您的代碼中, 是指類,并且由于類中沒有類變數,因此會顯示上述錯誤。PetPetPet.namePetnamePet
要解決此問題,您可以使用表示物件串列的類pets成員。因此,您可以遍歷成員并列印所有寵物的名稱。OwnerPetget_pets_string()petsOwner
所以在更改為 之后get_pets_string(),它會看起來像 -
def get_pets_string(owner):
result = owner.name.first " " owner.name.last "'s pets are: " ", ".join(p.name.first " " p.name.last for p in owner.pets)
return result
這里我習慣join()用逗號隔開所有寵物的名字
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/477034.html
標籤:Python python-3.x
