Как я могу добавить исключение для случаев, когда пользователь вводит отрицательное число - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь добавить исключение, чтобы распознать, когда кто-то вводит отрицательное число, и ответить чем-то, чтобы сказать, что вы можете ввести только положительное число

print('How many cats do you have?')
numCats = input()
try: 
    if int(numCats) >=4:
        print('Thats a lot of cats.')
    else:
        print('Thats not that many cats.')
except ValueError: 
    print('You did not enter a number.')

В данный момент оно ответит на пользователь вводит строку вместо целого числа, но я хочу, чтобы он мог отвечать пользователю, вводящему что-то вроде -4, печатая «Вы не можете использовать отрицательные числа».

Абсолютно новый для Python, поэтому любой совет, как добавить это, будет очень признателен, спасибо.

Ответы [ 3 ]

0 голосов
/ 17 февраля 2020
print('How many cats do you have?')
try: 
    numCats = int(input()) #Moving the int() around input() means we aren't calling int() for every if branch.
    #Also, need to move that in here, so it gets caught by the try/except
    if numCats >= 4:
        print('Thats a lot of cats.')
    elif numCats < 0:
        print('You need a positive amount of cats.') #just printing instead of using a raise statement, an exception is unnecessary
    else:
        print('Thats not that many cats.')
except ValueError: 
    print('You did not enter a number.')
0 голосов
/ 17 февраля 2020

Определите свой собственный класс исключений, который вы можете выбрать или нет:

class NegativeNumberException(Exception):
    pass

print('How many cats do you have?')
try:
    numCats = int(input())
    if numCats >=4:
        print('Thats a lot of cats.')
    elif numCats < 0:
        raise NegativeNumberException()
    else:
        print('Thats not that many cats.')
except ValueError:
    print('You did not enter a number.')
except NegativeNumberException as e:
    print("You entered a negative number.")
0 голосов
/ 17 февраля 2020

Это просто

raise ValueError("you must give a positive number")

...