Как сделать оператор elif и, кроме функции повторения ValueError? - PullRequest
0 голосов
/ 11 июля 2020

Я участвую в разделе 4 курса Udemy «Автоматизация скучной работы», в котором рассматривается обработка ошибок с помощью команды try / except. недопустимое нецелое или отрицательное целое число?

print('How many cats do you have?')
numCat = input()
try:
    while True:
        if int(numCat) >= 4:
            print('That is a lot of kitties')
            break
        elif int(numCat) <= -1:
            print('You can not have '+str(numCat)+' kitties, try again')
            break
        else:
            print('That is not that many kitties')
            break
except ValueError:
    print('Please enter a number, try again')

Ответы [ 4 ]

0 голосов
/ 11 июля 2020

переместите свой try-except блок и input внутрь while l oop, чтобы перехватить недопустимые входные данные.

while True:
    print('How many cats do you have?')
    numCat = input()
    try:
        if int(numCat) >= 4:
            print('That is a lot of kitties')
            break
        elif int(numCat) <= -1:
            print('You can not have ' + str(numCat) + ' kitties, try again')
            break
        else:
            print('That is not that many kitties')
            break
    except ValueError:
        print('Please enter a number, try again')
0 голосов
/ 11 июля 2020

Я бы лично сделал что-то вроде этого:

БОНУС: isdigit считает только положительные числа!

numCat = None
while True:
  numCat = input()
  if numCat.isdigit():
     break
  print('Please enter a positive number.')
if int(numCat) >= 4:
  print('That is a lot of kitties')
else:
  print('That is not that many kitties')
0 голосов
/ 11 июля 2020

Не уверен, что это наиболее эффективное решение или есть лучшие. Но я бы сделал l oop через попытку и позволил пользователю снова ввести

print('How many cats do you have?')
numCat = input()
loopCount = 0
while loopCount == 0:
    numCat = input()
    try:
        while True:
            if int(numCat) >= 4:
                print('That is a lot of kitties')
                break
            elif int(numCat) <= -1:
                print('You can not have '+str(numCat)+' kitties, try again')
                break
            else:
                print('That is not that many kitties')
                break
        loopCount = 1
    except ValueError:
        print('Please enter a number, try again')
0 голосов
/ 11 июля 2020

Какова цель l oop, если в каждом пути есть break? Вы можете сделать что-то вроде этого:

cond = True
while cond:
    print('How many cats do you have?')
    numCat = input()
    try:
        cond = False
        if int(numCat) >= 4:
            print('That is a lot of kitties')
        elif int(numCat) <= -1:
            print('You can not have '+str(numCat)+' kitties, try again')
        else:
            print('That is not that many kitties')
    except ValueError:
        print('Please enter a number, try again')

Или с помощью break

while True:
    print('How many cats do you have?')
    numCat = input()
    try:
        if int(numCat) >= 4:
            print('That is a lot of kitties')
        elif int(numCat) <= -1:
            print('You can not have '+str(numCat)+' kitties, try again')
        else:
            print('That is not that many kitties')
        break
    except ValueError:
        print('Please enter a number, try again')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...