2016-11-16 17 views
0

ランダムに武器を選択したいのですが、その名前を書きたいと思いますが、そのコードで何が間違っていると思いますか?クラス内のリストからランダムに選択する方法

import random 
class Dusman: 
    def __init__(self,name='',weapon='',armor=''): 
     self.name= name 
     self.weapon= weapon 
     self.armor= armor 

    def name(self): 
     a=name 
     a = input("Write a name: ") 

    def weapon(self): 
     weapon=["Sword","Axe","Topuz"] 
     print(random.choice(weapon)) 


    def print(self): 
     print("Name",self.name,"Weapon: ",self.weapon,"Armor: ",self.armor) 

dusman1=Dusman() 
dusman1.name 
dusman1.weapon 
dusman1.print() 
+6

物事に同じ名前が付いていないようにしてください!彼らは上書きされます。 'Dusman.name'は関数か文字列ですか? –

+1

インデントを固定する必要があります – depperm

+0

また、「結果は私の期待通りではない」と解説することができます。何を得て、何を期待していますか – depperm

答えて

0

これはあなたの期待される結果ですか?

import random 

class Dusman: 
    def __init__(self,name='',weapon='',armor=''): 
     self._name= name 
     self._weapon= weapon 
     self._armor= armor 

    def name(self): 
     self._name = input("Write a name: ") 

    def weapon(self): 
     weapons=["Sword","Axe","Topuz"] 
     self._weapon = random.choice(weapons) 
     print(self._weapon) 

    def __str__(self): 
     return "Name: {0} Weapon: {1} Armor: {2}".format(self._name, 
                 self._weapon, 
                 self._armor) 

if __name__ == '__main__': 
    dusman1=Dusman() 
    dusman1.name() 
    dusman1.weapon() 
    print(dusman1) 

あなたの問題は、名前の衝突があることです。あなたは関数と同じ変数を命名しています。

+0

ありがとうございました:)しかし、私はそれを試しました_name_なら同じように働いていた。 _name_関数が実際に行うことは何ですか? –

+0

PyCharmのようなIDEを使うことができます。この種の問題では、あなたに多くの助けになります。 – zanseb

+0

私はpycharmを大いに役立ちますが、私は間違ったことに集中していますので、私は間違いを見つけられませんでした。 –

0

現在のところ、選択肢のみを印刷します。

あなたはweaponインスタンス変数への選択の結果を設定する必要があります。

def weapon(self): 
    weapons = ["Sword", "Axe", "Topuz"] 
    self.weapon = random.choice(weapons) 
+0

oww私はそれを得ました:)たくさんありがとうございました:) –

関連する問題