Python给了我;无”;尝试打印函数时

Python给了我;无”;尝试打印函数时,python,printing,Python,Printing,我对python很陌生,现在只玩了几天。我正试图拼凑一个程序来展示我心目中的作战系统。我的问题是,当我尝试打印时,我总是得到“无” import os class Player(): def __init__(self, name, hp, maxhp, strength, intel, charm, level): self.name = name self.hp = hp self.maxhp = maxhp self.

我对python很陌生,现在只玩了几天。我正试图拼凑一个程序来展示我心目中的作战系统。我的问题是,当我尝试打印时,我总是得到“无”

import os
class Player():
    def __init__(self, name, hp, maxhp, strength, intel, charm, level):
        self.name = name
        self.hp = hp
        self.maxhp = maxhp
        self.strength = 10
        self.intel = intel
        self.charm = charm
    self.level = level
    def attack(self, Enemy):
        Enemy.hp -= self.strength

class Steve():
    def __init__(self, name, hp, maxhp, strength, intel, charm, level):
        self.name = name
        self.hp = hp
        self.maxhp = maxhp
        self.strength = strength
        self.intel = intel
    self.charm = charm
    self.level = level

class Barry():
    def __init__(self, name, hp, maxhp, strength, intel, charm, level):
        self.name = name
        self.hp = hp
        self.maxhp = maxhp
        self.strength = strength
        self.intel = intel
        self.charm = charm
        self.level = level
def Start():
    Player.hp = 100
    Player.maxhp = 200
    Player.strength = 30
    Player.intel = 10
    Player.charm = 43
    Player.level = 23
   nameSelection()


def nameSelection():
    os.system('cls')
    Player.name = input("Please enter your name\n==>")
    print("==>")
    gameStart()

def gameStart():
    os.system('cls')
    global Enemy
    print ("Player Name:",Player.name)
    print ("Who would you like to fight?")
    print ("1.)Steve")
    print ("2.)Barry")
    print ("3.)Change your name")
    option = input("==>")
    if option == "1":
        Enemy = Steve("Steve", 100, 200, 10, 20, 30, 50) 
        fight()      
    elif option == "2":        
        Enemy = Barry("Barry", 100, 200, 10, 20, 30, 50) 
        fight()  
    elif option == "3":
        nameSelection()

def attack():
    Enemy.hp -= Player.strength

def fight():
    os.system('cls')
    while Enemy.hp > 0:
        os.system('cls')
        print(CharacterStats())
        print ("1.) Attack")
        print ("2.) Run")
        option = input("==>")           
        if option == "1":
            attack()
            print (Enemy.hp)        
    print ("You did it! You have defeated", Enemy.name,"!")
    gameStart()

def CharacterStats():
    print ("You now face", Enemy.name)
    print ("His current health is", Enemy.hp,"/",Enemy.maxhp)
    print ("His strength is", Enemy.strength)
    print ("His intelligence is", Enemy.intel)
    print ("His charm is", Enemy.charm)
    print ("He is level", Enemy.level)
Start()
当我使用两个选项中的一个进行搏击时,我得到

You now face Steve
His current health is 100 / 200
His strength is 10
His intelligence is 20
His charm is 30
He is level 50
None
1.) Attack
2.) Run
==>

我已经读到了return可以修复它,但是我似乎无法让return给我想要的结果,无论它看起来有多不同,都会被打印到玩家的页面上,而且它只返回这些数据中的一行。我可能弄错了我的一些术语,我希望我清楚我的问题是什么。

您没有得到任何术语,因为您正在打印函数,您只需调用函数,函数不会返回任何内容,这就是您没有得到任何术语的原因。 更改此行:

print(CharacterStats())
致:


在Python中,当您调用一个函数时,该函数执行其工作,然后返回一个值。比如说,

def add(x, y):
   print("Working on it...")
   answer = x + y
   print("Got it!")
   return answer
调用时,此函数将执行四项操作。它将向终端打印“正在处理…”。它将创建一个名为answer的变量,并将其分配给x和y的和。它会打印“明白了”。然后,它会默默地返回这个答案

回报意味着什么?这意味着两件事:它告诉Python将控制权返回到调用函数的位置,它还说:无论在哪里调用我,都用某个值替换我

所以如果我写

print(add(2,3))
该函数将被调用并进行思考,将“工作”和“获取”打印到终端。它将返回5,因此现在Python返回到print调用并用5替换add(2,3):

它将打印5。同样,我可以做到:

 x = add(4,6) + add(5,2)
这将打印: 正在做这件事。。。 知道了! 正在做这件事。。。 明白了

然后x将被设置为10+7,或17

在代码中,由于没有显式返回函数中的任何内容,Python在到达函数的最后一行时使用默认的隐式返回None。也就是说

 print(MyFunc())
其实理解为,做功能,然后

 print(None)

希望能把事情弄清楚

作为旁注,如果在游戏中使用继承(使用Player类作为基类,例如:class Steve(Player):pass),则更合适:

要打印什么?该函数不返回任何内容(或
None
),因此这就是打印的内容。
 print(MyFunc())
 print(None)