Skip to main content
 首页 » 编程设计

python之为什么这个脚本在输出中打印一个无关的 'none'

2025年05月04日10落叶无声

我编写了一个简单的脚本来帮助我更好地理解类的使用。它为游戏生成一个随机角色。我定义了对象,然后对该对象调用了一个函数来打印出生成的字符。在打印 block 的末尾,有一个无关的“无”,我不确定它来自哪里,也不确定它为什么被打印。这是示例输出:

ted 
Strength  : 20 
Dexterity : 17 
Hit Points: 100 
Aura      : 100 
Weapon    :   
Spell     :   
Item      :   
Element   :   
-------------------- 
None 

在我的代码中,player.stats() 的最后一行是 print "-"* 20,它显示在“None”的正上方。下面是定义对象的代码:

class Player(object): 
 
def __init__(self, name): 
    self.name = name 
    self.strength = randint(15, 20) 
    self.dexterity = randint(15, 20) 
    self.hit_points = 100 
    self.aura = 100 
    self.weapon = " " 
    self.spell = " " 
    self.item = " " 
    self.element = " " 
 
def stats(self): 
    print "\n" 
    print self.name 
    print "Strength  : %d" % self.strength 
    print "Dexterity : %d" % self.dexterity 
    print "Hit Points: %d" % self.hit_points 
    print "Aura      : %d" % self.aura 
    print "Weapon    : %s" % self.weapon 
    print "Spell      : %s" % self.spell 
    print "Item      : %s" % self.item 
    print "Element   : %s" % self.element 
    print "-" * 20 

然后使用这个实例化对象:

name = raw_input("Name your character: ") 
 
player = Player(name) 
print player.stats() 

完整代码可阅读here at Pastebin如有必要。

请您参考如下方法:

print player.stats() 

是罪魁祸首。 player.stats() == None

你只需要:

player.stats() 

最好将函数命名为 player.printStats()。


另一种选择是让它返回一个字符串:

def stats(self): 
    return '\n'.join([ 
        self.name 
        "Strength  : %d" % self.strength, 
        "Dexterity : %d" % self.dexterity, 
        "Hit Points: %d" % self.hit_points, 
        "Aura      : %d" % self.aura, 
        "Weapon    : %s" % self.weapon, 
        "Spell     : %s" % self.spell, 
        "Item      : %s" % self.item, 
        "Element   : %s" % self.element, 
        "-" * 20 
    ]) 

然后 print player.stats() 会按预期运行