Функция, которая получает числовой ввод от другой функции, которая должна выдавать ошибку, если число отрицательное - PullRequest
0 голосов
/ 29 сентября 2018

Я делаю функцию sum (), которая должна получить положительное целое число x от номера функции ().Функция number () должна выдавать ошибку, если ввод отрицательный, и запрашивать у пользователя другой ввод.

def number():
    try:
        x = int(input('Please enter a positive number: '))
        if x <= 0:
            raise ValueError
    except ValueError:
        print('Could you please enter positive number once againg!!')
        x = int(input('Enter a positive number: '))
    return x

def sum(x):
    print(f'Your number is {x}')

x = number()
sum(x)

Я пытался запустить его, когда я даю ему отрицательное значение, он снова спрашивает, но если я снова даю ему отрицательное число, что-то идет не так.Есть идеи?

Please enter a positive number: -4
Could you please enter positive number once againg!!
Enter a positive number: -4
Your number is -4

1 Ответ

0 голосов
/ 30 сентября 2018

Это то, что делает ваш код.Попробуйте выполнить свою функцию (вручную или с помощью отладчика), и вы увидите, что это именно то, что ожидается.Чтобы код продолжал спрашивать до тех пор, пока не будет получено положительное число, вам понадобится цикл while.

Кроме того, нет необходимости вызывать ошибку, так как вы перехватываете ее сразу после.Ваш код фактически эквивалентен:

def number():
    x = int(input('Please enter a positive number: '))
    if x <= 0:
        print('Could you please enter positive number once againg!!')
        x = int(input('Enter a positive number: '))
    return x
...