函数调用无法正常工作(Python)

时间:2020-07-27 18:21:24

标签: python debugging methods

对于self.trying的输入1,set_jump()方法不起作用。程序在其中执行while循环

代码:

jump = []
z = []


class jumps:
    def __init__(self, numberOfJumps, trying):
        self.numberOfJumps = numberOfJumps

        self.trying = int(trying)

    def setJumps(self):
        if self.trying == 1:
            # print("hello")
            self.set_jump()
        if self.trying == 2:
            self.get_jump()

        return ""

    def set_jump(self):

        counterSetJump = 0
        while counterSetJump < int(self.numberOfJumps):
            print("what was the distance the athlete jumped at jump number" + str(counterSetJump + 1))
            z.append(float(input()))
            counterSetJump += 1

        return ""

    def get_jump(self):
        counterGetJumps = 0
        while counterGetJumps < int(self.numberOfJumps):
            print(z[counterGetJumps])
            print("this is the jump for the " + str(counterGetJumps) + " time")
            counterGetJumps += 1
            return ""


class athlete:
    def __init__(self, name, yearsPro):
        self.name = name
        self.yearsPro = yearsPro

    def information(self):
        print("the athletes name is " + self.name)
        print("he as been active for " + str(self.yearsPro))
        return ""


a = []
b = []
i = 0
know = int(input("how many athletes you know the information for"))
while i < know:
    a.append(0)
    b.append(0)
    i = i + 1
j = 0
while j < know:
    a[j] = athlete(input("what is the athletes name?"), input("how many years as the athlete been active"))
    b[j] = jumps(input("how many jumps did the athlete jumped?"),
                 input("input 1 for settig and 2 for getting the jumps"))  # not getting called?
    b[j].setJumps()

    j = j + 1

infoFor = int(input("who do you want the info for"))
print(a[int(infoFor) - 1].information())
print(b[int(infoFor) - 1].get_jump())

1 个答案:

答案 0 :(得分:0)

签出代码

jump = []
z = []


class jumps:
    def __init__(self, numberOfJumps, trying):
        self.numberOfJumps = numberOfJumps
        self.trying = int(trying)
        print("trying = "+str(self.trying))

    def setJumps(self) :
        if self.trying == 1:
            #print("hello")
            self.set_jump()
        if self.trying == 2:
            self.get_jump()
        print("Yes I have chnaged trying to = :"+str(self.trying))
        return ""

    def set_jump(self):
        print("set_jump finally called")
        i = 0
        while(i < int(self.numberOfJumps)):
            print("what was the distance the athlete jumped at jump number" + str(i))
            z.append(int(input()))
            i = i + 1

    def get_jump(self):
        i = 0
        while(i < int(self.numberOfJumps)):
            return z[i]
            i = i + 1


class athlete:
    def __init__(self, name, yearsPro):
        self.name = name
        self.yearsPro = yearsPro
    def information(self):
        print("the athletes name is " + self.name)
        print("he as been active for " + str(self.yearsPro))
        return ""



a = []
b = []
i = 0
know = int(input("how many athletes you know the information for"))
while(i < know):
    a.append(0)
    b.append(0)
    i = i + 1
j = 0
while(j <know):
    a[j] = athlete(input("what is the athletes name?"), input("how many years as the athlete been active"))
    b[j] = jumps(input("how many jumps did the athlete jumped?"),
                 input("input 1 for settig and 2 for getting the jumps")) #not getting called?
    b[j].setJumps()
    k=j
    for k in b:
        k.setJumps()
        #j=j+1
    j = j + 1

infoFor = int(input("who do you want the info for"))
print(a[int(infoFor) - 1].information())
print(b[int(infoFor) - 1].setJumps())