2016-11-16 75 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_它的工作原理相同。 if _name_函數實際上做了什麼? –

+0

您可以嘗試使用PyCharm之類的IDE。它會幫助你解決這類問題。 – zanseb

+0

我使用pycharm有很多幫助,但我專注於錯誤的東西,所以我無法找到我的錯誤,但謝謝:) –

0

目前,您只打印選擇。

你需要選擇的結果設置爲weapon實例變量:

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

oww我明白了:)非常感謝:) –