Cómo hacer que los usuarios solo ingresen valores enteros en el progtwig Python

Tengo una tarea para la que estoy muy confundido. Tengo que escribir un progtwig que permita a los usuarios ingresar la cantidad de huevos que están comprando. Luego, el progtwig les dirá cuántas cajas (de seis huevos) pueden llenar y cuántos huevos quedan.

Necesito asegurarme de que si el usuario ingresa un valor no entero, se mostrará un mensaje de error. ¡No puedo averiguar cómo hacer esto y cualquier ayuda sería muy apreciada! ¿Es algo que ver con los bucles mientras estoy o estoy completamente equivocado?

Deje que el usuario ingrese lo que desee y advierta solo si no es un número entero:

try: num = int(input("enter number: ")) except ValueError: print("you must enter an integer") 

Esta es la forma pythonica de hacerlo, después de todo, es “Más fácil pedir perdón que permiso” .

[EDITAR] Mi comentario y código es válido solo para Python 2.x.

Contrariamente a otras respuestas, casi nunca debe usar ‘input ()’ cuando pregunta a los usuarios, sino ‘raw_input ()’.

‘input ()’ evalúa la cadena que recibió del usuario, como si fuera parte del progtwig. Este no es solo un problema de seguridad, sino que es impredecible y puede generar casi cualquier excepción (como NameError si Python intentará resolver una letra como nombre de variable).

 num = None while num is None: try: num = int(raw_input("Enter an integer: ")) except ValueError: print 'That was not an integer!' affirmations = ('YES', 'Y') answer = raw_input("Do you want to continue? (Yes/Y/y):\n") if answer.strip().upper() in affirmations: continue else: break print num 

Sí, esto podría ser un bucle de tiempo como

 while 1: instr = input('Enter an integer') try: val = int(instr) print 'integer entered', val break except ValueError: print instr, ' is not an integer' 
 while True: try: amount=int(input("how many do you want to buy")) break except ValueError: print("Please Enter An Amount") continue else: break 

Esta es una forma sencilla de hacer que el usuario ingrese un número entero en Python 3. Esto también puede ser para asegurarse de que el usuario ingrese una cadena. Todo lo que necesita hacer para esto es simplemente cambiar int( .into str(

Normalmente pongo el texto afuera y lo envuelvo como una función para hacerlo similar a la input estándar. Tal vez a alguien le guste:

 def int_input(text): """Makes sure that that user input is an int""" while True: try: num = int(input(text)) except ValueError: print("You must enter an integer.") else: return num user_int = int_input("Enter a number: ")