# Checking input is a number in python

I need help, my program is simulating the actions of a dice. I want to an error check to occur checking if the input string is a number and if it isn't I want to ask the question again again until he enters an integer

# This progam will simulate a dice with 4, 6 or 12 sides. import random def RollTheDice(): print("Roll The Dice") print() NumberOfSides = int(input("Please select a dice with 4, 6 or 12 sides: ")) Repeat = True while Repeat == True: if not NumberOfSides.isdigit() or NumberOfSides not in ValidNumbers: print("You have entered an incorrect value") NumberOfSides = int(input("Please select a dice with 4, 6 or 12 sides") print() UserScore = random.randint(1,NumberOfSides) print("{0} sided dice thrown, score {1}".format (NumberOfSides,UserScore)) RollAgain = input("Do you want to roll the dice again? ") if RollAgain == "No" or RollAgain == "no": print("Have a nice day") Repeat = False else: NumberOfSides = int(input("Please select a dice with 4, 6 or 12 sides: "))

## Answers

As a commenter disliked my first answer with try: except ValueError and the OP asked about how to use isdigit, that's how you can do it:

valid_numbers = [4, 6, 12] while repeat: number_of_sides = 0 while number_of_sides not in valid_numbers: number_of_sides_string = input("Please select a dice with 4, 6 or 12 sides: ") if (not number_of_sides_string.strip().isdigit() or int(number_of_sides_string) not in valid_numbers): print ("please enter one of", valid_numbers) else: number_of_sides = int(number_of_sides_string) # do things with number_of_sides

the interesting line is not number_of_sides_string.strip().isdigit(). Whitespace at both ends of the input string is removed by strip, as a convenience. Then, isdigit() checks if the full string consists of numbers.

In your case, you could simply check

if not number_of_sides_string not in ['4', '6', '12']: print('wrong')

but the other solution is more general if you want to accept any number.

As an aside, the Python coding style guidelines recommend lowercase underscore-separated variable names.