Пользователь вводит значение, и я хочу, чтобы оно было ТОЛЬКО положительным целым числом . Когда введенное значение не является положительным целым числом, оно зациклится и попросит пользователя ввести снова. Как мне написать исключительный случай для этого? Я хочу написать исключительный случай для отрицательного числа, десятичного числа и строки.

-2
Cheang Wai Bin 29 Авг 2017 в 05:49

4 ответа

Лучший ответ

Вот пример цикла:

>>> x = -1
>>> while(x < 0):
...   x = input('Enter a positive integer> ')
...   try:
...     x = int(x)
...   except ValueError:
...     x = -1
...
Enter a positive integer> aaa
Enter a positive integer> -123
Enter a positive integer> 5.2
Enter a positive integer> 5
>>> print(x)
5

Десятичное число терпит неудачу, потому что это эквивалентно int("5.2"), который генерирует ValueError

0
import random 29 Авг 2017 в 04:34

Как насчет использования регулярного выражения

import re

re.match('^[1-9][0-9]*$', input)

def isPositive(input):
     return bool(re.match('^[1-9][0-9]*$', input))


In [26]: isPositive('3')
Out[26]: True

In [27]: isPositive('-4')
Out[27]: False

In [28]: isPositive('0')
Out[28]: False

In [29]: isPositive('345')
Out[29]: True

In [30]: isPositive('3.5')
Out[30]: False
1
eugene 29 Авг 2017 в 03:03

Я преобразовал float в int, потому что я пытался последовательность Фибоначчи

test = True
user1 = ''

while test:
    user1 = float(input("Enter numbers of fibonacci : "))
    if int(user1) == user1:

        if user1 > 0:
            user1 = int(user1)
            break
        else:
            print("Please enter a positive integer")

    else:
        print("Please enter a positive integer")
0
Cheang Wai Bin 29 Авг 2017 в 03:35

Это можно сделать с помощью простой проверки:

n = int(input())
while n < 0:  # simply check that it's not negative:
    print("can't be negative!")
    n = int(input())
0
alfasin 29 Авг 2017 в 03:01