前提・実現したいこと
・Python
・コンストラクタを用いたコード書きの練習
・コンストラクタにif,formatを絡めて書いた場合のエラー
発生している問題・エラーメッセージ
<bound method Pokemon.date1 of <__main__.Pokemon object at 0x03283110>> <bound method Pokemon.date1 of <__main__.Pokemon object at 0x03283490>> <bound method Pokemon.date1 of <__main__.Pokemon object at 0x032834B0>>
該当のソースコード
python
1class Pokemon: 2 def __init__(self,name,power,defense): 3 self.name=name 4 self.power=power 5 self.defense=defense 6 7 def date1(self): 8 if self.power>self.defense: 9 return "{0}のこうげきは{1}、ぼうぎょは{2}じゃ! このポケモンはこうげきがたかいみたいじゃな!".format(self.name,self.power,self.defense) 10 elif self.power==self.defense: 11 return "{0}のこうげきは{1}、ぼうぎょは{2}じゃ! このポケモンはバランスがいいみたいじゃな!".format(self.name,self.power,self.defense) 12 else: 13 return "{0}のこうげきは{1}、ぼうぎょは{2}じゃ! このポケモンはぼうぎょがたかいようじゃな!".format(self.name,self.power,self.defense) 14 15pokemon1=Pokemon("ピカチュウ",55,40) 16print(pokemon1.date1) 17 18pokemon2=Pokemon("ミュウ",100,100) 19print(pokemon2.date1) 20 21pokemon3=Pokemon("カメックス",83,100) 22print(pokemon3.date1) 23
試したこと
python
1class Pokemon: 2 def __init__(self,name,human): 3 self.name=name 4 self.human=human 5 6 def goodman(self): 7 return self.name+"と"+self.human 8 9character1=Pokemon("ピカチュウ","サトシ") 10print(character1.goodman()) 11 12#上記のように__init__を用いたコードではエラーは発生しない。 13#しかし、if,formatを絡めて書いた場合にエラーが発生してしまう。 14
目標物
ピカチュウのこうげきは55、ぼうぎょは40じゃ! このポケモンはこうげきがたかいみたいじゃな!
ミュウのこうげきは100、ぼうぎょは100じゃ! このポケモンはバランスがいいみたいじゃな!
カメックスのこうげきは83、ぼうぎょは100じゃ! このポケモンはぼうぎょがたかいようじゃな!
の出力。
補足
試したことで書いたように、シンプルな形式で「initで複数の引数を用いる」ことを理解しました。しかし、if,formatを絡めて書いた場合にエラーが発生してしまいます。
コードのどの部分に問題があるのか教えていただきたいです。
問題は確かにある(意図通りには動かない)コードでしょうが、SyntaxError: invalid syntaxにはならないです。貼り付けたコードが手元のものと一致しているか再度確認してください。
回答3件
あなたの回答
tips
プレビュー