2016-11-16 35 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我明白了:)非常感谢:) –