¿Cómo ingresas enteros usando la entrada en Python?

Estoy tratando de enseñarme a mí mismo cómo codificar en Python y esta es la primera vez que publico en Stack Overflow, así que disculpe cualquier inconveniente en esta publicación. Pero vamos a hacerlo bien.

Estoy tratando de usar el comando de entrada para devolver un entero. También he realizado mi investigación, así que a continuación se muestran mis bashs múltiples en Python 3.4 y los resultados que siguen:

Intento # 1

guess_row = int(input("Guess Row: ")) 

Vuelvo lo siguiente:

 Traceback (most recent call last): File "", line 1, in  ValueError: invalid literal for int() with base 10: 'Guess Row: 2` 

Intento # 2

 guess_row = float(input("Guess Row: ")) 

Vuelvo lo siguiente:

 Traceback (most recent call last): File "", line 1, in  ValueError: could not convert string to float: "Guess Row: 2"" 

Intento # 3

 try: guess_row=int(input("Guess Row: ")) except ValueError: print("Not an integer") 

Aquí, recupero lo siguiente:

 Guess Row: 2 Not an integer 

Aunque devuelve algo, sé que esto es incorrecto porque, por un lado, la entrada se devuelve como una cadena y también devuelve el comando de impresión.

El punto es, he intentado int, flotar e intentar, y hasta ahora nada ha funcionado. ¿Alguna sugerencia? Solo quiero poder ingresar un número entero y devolverlo como uno.

Su tercer bash es correcto, pero ¿qué está sucediendo con guess_row / guess_row antes / después de este código? Por ejemplo, considere lo siguiente:

 a = "Hello" try: a = int(input("Enter a number: ")) except ValueError: print("Not an integer value...") print(str(a)) 

Si ingresa un número válido, la línea final imprimirá el valor que ingresó. De lo contrario, se generará una excepción (que muestra el mensaje de error en el bloque de except ) y se mantendrá sin cambios, por lo que la línea final imprimirá “Hola” en su lugar.

Puede refinar esto para que un número no válido le solicite al usuario que vuelva a ingresar el valor:

 a = None while a is None: try: a = int(input("Enter a number: ")) except ValueError: print("Not an integer value...") print(str(a)) 

Para ilustrar los comentarios, desde 3.4.2 Shell inactivo en Windows, instalador python.org (PSF)

 >>> n = int(input('Guess1: ')) Guess1: 2 >>> n2 = float(input('Guess2: ')) Guess2: 3.1 >>> n, n2 (2, 3.1) 

¿Qué sistema está utilizando y cómo instaló Python?

Sin embargo, me di cuenta de algo extraño. El código funciona si lo ejecuto simplemente usando la ejecución tradicional (es decir, el botón verde) que ejecuta todo el código, en lugar de intentar ejecutar líneas de código individuales presionando F2. ¿Alguien sabe por qué este puede ser el caso?

Esto parece ser un problema en Eclipse, de las preguntas frecuentes de PyDev :

¿Por qué raw_input () / input () no funciona correctamente en PyDev?

La consola de Eclipse no es una copia exacta de un shell … uno de los cambios es que cuando se presiona en un shell, puede aparecer un \ r, \ n o \ r \ n como un caracter de línea final, dependiendo de en tu plataforma Python no espera esto: de los documentos, dice que eliminará el último \ n (marcado en la versión 2.4), pero en algunas plataformas dejará un lugar allí. Esto significa que el raw_input () se debe usar generalmente como raw_input (). Replace (‘\ r’, ”), y el input () se debe cambiar por: eval (raw_input (). Replace (‘\ r’, ‘ ‘)).

También vea: PyDev 3.7.1 en Eclipse 4 – input () antepone la cadena de solicitud a la variable de entrada? , No se puede proporcionar la entrada del usuario en la consola PyDev en Eclipse con Jython .