首页 > 解决方案 > 从玩家那里得到输入后,猜数字游戏停止

问题描述

我做了这个简单的猜数字游戏,但是当我尝试它时,代码在获得玩家输入后结束。

代码:

class Gra():

    def __init__(self, minimum, maximum, dobra_liczba):
        self.minimum = minimum
        self.maximum = maximum
        self.dobra_liczba = dobra_liczba

    def sprawdz_liczbe_int(self, liczba):
        print("sprawdzam liczbe")
        if isinstance(liczba, int) and self.minimum <= liczba <= self.maximum:
            return True
    else:
        return False

    def czy_liczba_trafiona(self, liczba):
        if liczba == self.dobra_liczba:
            print("trafiłeś!")
        else:
            print("pudło!")

    def graj(self):
        x = int(input("wpisz liczbe od "+str(self.minimum)+" do "+str(self.maximum)+": "))
        print(x)
        if self.sprawdz_liczbe_int(x) == True:
        self.czy_liczba_trafiona(x)

a1 = Gra(0, 100, 50)
a1.graj()

我尝试运行此代码但它没有工作,但是当我尝试在线编译器代码时工作。

标签: pythonpython-3.xfunctionclass

解决方案


我在这里假设您希望玩家继续玩直到他被击中。在这种情况下,您需要循环调用玩家输入猜测的方法,在您的情况下就是graj(self)方法。此外,如果您的方法是返回一个布尔值,例如 in 中的sprawdz_liczbe_int(self, liczba)那个,那么您不需要“if”语句,因为返回语句本身就足够了。

class Gra():

    def __init__(self, minimum, maximum, dobra_liczba):
        self.minimum = minimum
        self.maximum = maximum
        self.dobra_liczba = dobra_liczba

    def sprawdz_liczbe_int(self, liczba):
        print("sprawdzam liczbe")
        return isinstance(liczba, int) and self.minimum <= liczba <= self.maximum  # Immediately return the result of the statement whether it's True or False

    def czy_liczba_trafiona(self, liczba):
        if liczba == self.dobra_liczba:
            print("trafiłeś!")
        else:
            print("pudło!")
            self.graj()  # Loop over the input method

    def graj(self):
        x = int(input("wpisz liczbe od "+str(self.minimum)+" do "+str(self.maximum)+": "))
        print(x)
        if self.sprawdz_liczbe_int(x):  # Basically saying: "If True:"
            self.czy_liczba_trafiona(x)


a1 = Gra(0, 100, 50)
a1.graj()

推荐阅读