Цикл не работает после добавления проверки ввода - PullRequest
0 голосов
/ 01 мая 2018
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, оно повторяется только один раз, так что можно ввести только один тип питомца (а не два). Я уверен, что ответ очевиден, но я не могу понять это ... любая помощь очень приветствуется!

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

последняя строка в вашем методе return s - что приведет к выходу из самой внешней петли (той, которая контролирует количество обрабатываемых питомцев).

Я думаю, вы хотите, чтобы ваш код был похож на

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)
0 голосов
/ 01 мая 2018

Часть else будет выполняться только один раз, независимо от значения, введенного в try-случае, поэтому попробуйте применить цикл for, чтобы часть else выполнялась n раз

for i in range(0,PetTotal):
    #else part here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...