-2

I start learning python, and in an exercise it asks to create a program that only postive intger number will be accepted.

This is what I have written:

while True:
    number = input('Type an integer positive number: ')
    try:
        number = int(number)
        break
    except ValueError:
        print ('Value not accepted')
        break

How can I add in my block the >0 check ?

baldr
  • 2,891
  • 11
  • 43
  • 61

4 Answers4

0

You could throw an exception using raise.

while True:
    number = input('Type an integer positive number: ')
    try:
        number = int(number)
        if number < 0 :
            raise ValueError
    except ValueError:
        print ('Value not accepted')
        break

Output

Type an integer positive number: 3
Type an integer positive number: 4
Type an integer positive number: -4
Value not accepted
vnk
  • 1,060
  • 1
  • 6
  • 18
0

You should try to check if is bigger than 0 before the first break.

while True:
    number = input('Type an integer positive number: ')
    try:
        number = int(number)
        if number > 0:
             break
    except ValueError:
        print ('Value not accepted')
        break
Julio Porto
  • 113
  • 8
0

I'm guessing you wanna keep your exception handling as it is so my suggestion would be:

while True:
    number = input('Type an integer positive number: ')
    try:
        number = int(number)
        if number <= 0:
            raise ValueError('Negative number or zero entered.')
        break
    except ValueError as ve:
        print(ve)
        break

I hope this helps you to finish your task and you continue to have fun learning Python. I'm also new to this but Python is so much fun! :)

maxr
  • 1
  • 2
0

use continus to let user input again.

while True:
    number = input('Type an integer positive number: ')
    try:
        number = int(number)
        if number < 0:
            continue
        else:
            break
    except ValueError:
        print('Value not accepted')
        break