Python 如何从函数返回值并在while循环中引用它

Python 如何从函数返回值并在while循环中引用它,python,Python,基本上我想从healthcheck函数返回一个值,这样我就可以阻止口袋妖怪互相攻击。你会发现我遗漏了“如果”行的其余部分,因为我不确定在这里放什么。我需要一种从healthcheck函数返回函数的方法,但是我无法让return语句工作 class enemy(): global enemylives global dead dead=0 enemylives=10 def healthcheck(): if enemylives<=0

基本上我想从healthcheck函数返回一个值,这样我就可以阻止口袋妖怪互相攻击。你会发现我遗漏了“如果”行的其余部分,因为我不确定在这里放什么。我需要一种从healthcheck函数返回函数的方法,但是我无法让return语句工作

class enemy():
    global enemylives
    global dead
    dead=0
    enemylives=10
    def healthcheck():
        if enemylives<=0:
        print("You defeated the enemy!")


while True:
               time.sleep(1)
               enemy1.attacked()
               enemy1.healthcheck()
               if 
                   break;
               time.sleep(1)
               squirtle.attacked()
               squirtle.healthcheck()
类敌人():
全球烯酰化酶
全球死亡
死=0
烯酰寿命=10
def healthcheck():

如果enemylives不确定游戏的逻辑是什么,但您应该创建属性并避免使用全局,请使用实例属性和方法。如果你的敌人生命值为0,你可以使用sys.exit退出循环

import time
import sys
from random import random

class Enemy():
    def __init__(self):
        self.dead = 0
        self.life = 100

    def attack(self):
        if random() > .20:
            self.life -= 10
            print("Attack successful, enemy  life decreased by 10  to {}".format(self.life))
        elif self.life <= 90:
            self.life += 10
            print("Attack unsuccessful, enemy increases life to {}".format(self.life))

    def health_check(self):
        if self.life <= 0:
            print("You defeated the enemy!")
            sys.exit()


enemy1 = Enemy()
while True:
    time.sleep(1)
    enemy1.attack()
    enemy1.health_check()
    time.sleep(1)
您还可以创建一个难度属性,通过增加或减少您将random()与之比较的值来设置成功攻击的几率:

类敌人():
定义初始值(自身,差异):
self.dead=0
自我寿命=100
self.diff=diff
def攻击(自我):
如果random()>self.diff:
自我寿命-=10
打印(“攻击成功,敌人生命减少10至{}”。格式(self.life))

elif self.life在尝试类之前,你应该学习如何使用函数和循环。我将返回一个布尔值,而不是在一个方法中调用
sys.exit()
,让主循环决定使用
break
sys.exit()
或其他任何东西。@PabloDíazOgni,是的,这只是一个如何使用属性的示例,我还是添加了另一个选项。
Attack successful, enemy  life decreased by 10  to 90
Attack unsuccessful, enemy increases life to 100
Attack successful, enemy  life decreased by 10  to 90
Attack successful, enemy  life decreased by 10  to 80
Attack successful, enemy  life decreased by 10  to 70
Attack successful, enemy  life decreased by 10  to 60
Attack successful, enemy  life decreased by 10  to 50
Attack unsuccessful, enemy increases life to 60
Attack unsuccessful, enemy increases life to 70
Attack successful, enemy  life decreased by 10  to 60
Attack successful, enemy  life decreased by 10  to 50
Attack successful, enemy  life decreased by 10  to 40
Attack successful, enemy  life decreased by 10  to 30
Attack successful, enemy  life decreased by 10  to 20
Attack unsuccessful, enemy increases life to 30
Attack successful, enemy  life decreased by 10  to 20
Attack successful, enemy  life decreased by 10  to 10
Attack successful, enemy  life decreased by 10  to 0
You defeated the enemy!
class Enemy():
    def __init__(self,diff):
        self.dead = 0
        self.life = 100
        self.diff = diff

    def attack(self):
        if random() > self.diff:
            self.life -= 10
            print("Attack successful, enemy  life decreased by 10  to {}".format(self.life))
        elif self.life <= 90:
            self.life += 10
            print("Attack unsuccessful, enemy increases life to {}".format(self.life))

    def health_check(self):
        if self.life <= 0:
            print("You defeated the enemy!")
            sys.exit()


enemy1 = Enemy(.20) 
class Enemy():
    def __init__(self,diff):
        self.dead = 0
        self.life = 100
        self.diff = diff

    def attack(self):
        if random() > self.diff:
            self.life -= 10
            print("Attack successful, enemy  life decreased by 10  to {}".format(self.life))
        elif self.life <= 90:
            self.life += 10
            print("Attack unsuccessful, enemy increases life to {}".format(self.life))


    def health_check(self):
        if self.life <= 0:
            print("You defeated the enemy!")
            return True
        return False

enemy1 = Enemy(.3)
while True:
        time.sleep(1)
        enemy1.attack()
        if enemy1.health_check():
             break
        time.sleep(1)