添加输入验证后,循环无法工作

2024-10-02 20:40:26 发布

您现在位置:Python中文网/ 问答频道 /正文

def Data():
    while True:
        try:
            PetTotal = int(input("Please enter the number of pets: "))
        except ValueError:
            print("Sorry, I didn't understand that.")
            continue
        else:
            PetBreeds = []
            Ages = []
            while True:
                try:
                    Gender = int(input("Enter gender option: ")) 
                except ValueError:
                    print("Sorry, I didn't understand that.")
                    continue
                if Gender > 2 or Gender < 1:
                    print("Wrong!")
                    continue
                else:
                    Count = 0
                    while Count != PetTotal:
                        Breed = str(input("Breed: "))
                        Age = float(input("Age: ")) 
                        if Gender == 1:
                            PetBreeds.append(Breed)
                            Ages.append(Age)
                            Count = Count + 1
                        else:
                            PetBreeds.append(Breed)
                            Ages.append(Age)
                            Count = Count + 1
                        PetInfo = dict(zip({PetBreeds, Ages))
                        return PetBreeds, Gender;

我已经添加了一些输入验证到我的代码,因为我试图理解它。但是,我的代码不再正常工作。当PetTotal大于2时,它只循环一次,因此只能输入一个pet类型(而不是两个)。我相信答案是显而易见的,但我想不出来…任何帮助都是非常欢迎的!你知道吗


Tags: trueinputagecountgenderelseprinttry
2条回答

不管try case中输入的值是多少,else部分只执行一次,因此请尝试应用for循环,以便else部分执行n次

for i in range(0,PetTotal):
    #else part here

方法returns中的最后一行-这将导致最外层的循环(控制要处理多少宠物的循环)退出。你知道吗

我想你希望你的代码看起来像

pets = []
total = input("...")

while len(pets) < total:
# or `for i in range(0, total):` as in Keshav's answer
  pet = { }

  ... # process input for gender, age, etc

  pets.append(pet)

相关问题 更多 >