pasar online lib2to3 from convertidor 2to3 python python-2.7 python-3.x int

python - online - ¿Cómo puedo leer entradas como enteros?



python 2to3 (15)

¿Por qué este código no introduce enteros? Todo en la web dice que se debe usar raw_input() , pero leí en Stack Overflow (en un hilo que no se raw_input() entrada de enteros) que se cambió el nombre de raw_input() a input() en Python 3.x.

play = True while play: x = input("Enter a number: ") y = input("Enter a number: ") print(x + y) print(x - y) print(x * y) print(x / y) print(x % y) if input("Play again? ") == "no": play = False


Convertir a enteros:

my_number = int(input("enter the number"))

Del mismo modo para los números de punto flotante:

my_decimalnumber = float(input("enter the number"))


En Python 3.x, se cambió el nombre de raw_input a input y se eliminó la input Python 2.x.

Esto significa que, al igual que raw_input , la input en Python 3.x siempre devuelve un objeto de cadena.

Para solucionar el problema, debe hacer explícitamente esas entradas en enteros colocándolos en int :

x = int(input("Enter a number: ")) y = int(input("Enter a number: "))

Además, Python no necesita / usa puntos y coma para terminar las líneas. Entonces, tenerlos no hace nada positivo.


En Python 3.x. Por defecto, la función de entrada toma entrada en formato de cadena. Para convertirlo en entero, debes incluir int (input ())

x=int(input("Enter the number"))


Encontré un problema al tomar entradas de enteros al resolver un problema en CodeChef , donde dos enteros, separados por espacios, deberían leerse desde una línea.

Mientras que int(input()) es suficiente para un solo entero, no encontré una forma directa de ingresar dos enteros. Intenté esto:

num = input() num1 = 0 num2 = 0 for i in range(len(num)): if num[i] == '' '': break num1 = int(num[:i]) num2 = int(num[i+1:])

Ahora uso num1 y num2 como enteros. Espero que esto ayude.


Múltiples preguntas requieren entrada para varios enteros en una sola línea. La mejor manera es ingresar toda la cadena de números en una línea y luego dividirlos en números enteros.

p=raw_input() p=p.split() for i in p: a.append(int(i))


Mientras que en su ejemplo, int(input(...)) hace el truco en cualquier caso, la función builtins.input python-future vale la pena ya que garantiza que su código funcione tanto para Python 2 como para 3 y deshabilite el comportamiento predeterminado de Python2 La input intenta ser "inteligente" sobre el tipo de datos de entrada ( builtins.input básicamente se comporta como raw_input ).


Para varios enteros en una sola línea, el mapa podría ser mejor.

arr = map(int, raw_input().split())

Si el número ya es conocido, (como 2 enteros), puede usar

num1, num2 = map(int, raw_input().split())


Python 3.x tiene la función input() que devuelve siempre una cadena. Por lo tanto, debe convertir a int

python 3.x

x = int(input("Enter a number: ")) y = int(input("Enter a number: "))

python 2.x

En python 2.x, las raw_input() y input() siempre devuelven cadenas, por lo que también debe convertirlas a int.

x = int(raw_input("Enter a number: ")) y = int(input("Enter a number: "))


Sí, en Python 3.x, raw_input se reemplaza con input . Para revertir al antiguo comportamiento de uso de input :

eval(input("Enter a number: "))

Esto le permitirá a Python saber que la entrada ingresada es un entero


Tomando int como entrada en python: tomamos una entrada de cadena simple usando:

input()

ahora queremos int como entrada. Así que encadenamos esta cadena a int. simplemente usando:

int(input())


input() (Python 3) y raw_input() (Python 2) siempre devuelven cadenas. Convierta el resultado a entero explícitamente con int() .

x = int(input("Enter a number: ")) y = int(input("Enter a number: "))

Consejo profesional: en Python no se necesitan puntos y coma.


TLDR

  • Python 3 no evalúa los datos recibidos con input función de input , pero la función de input Python 2 sí lo hace (lea la siguiente sección para comprender la implicación).
  • El equivalente de Python 2 de la input de Python 3 es la función raw_input .

Python 2.x

Había dos funciones para obtener la entrada del usuario, llamada input y raw_input . La diferencia entre ellos es que, raw_input no evalúa los datos y devuelve tal cual, en forma de cadena. Sin embargo, la input evaluará lo que haya ingresado y se devolverá el resultado de la evaluación. Por ejemplo,

>>> import sys >>> sys.version ''2.7.6 (default, Mar 22 2014, 22:59:56) /n[GCC 4.8.2]'' >>> data = input("Enter a number: ") Enter a number: 5 + 17 >>> data, type(data) (22, <type ''int''>)

Los datos 5 + 17 son evaluados y el resultado es 22 . Cuando evalúa la expresión 5 + 17 , detecta que estás sumando dos números y, por lo tanto, el resultado también será del mismo tipo int . Por lo tanto, la conversión de tipo se realiza de forma gratuita y 22 se devuelve como resultado de la input y se almacena en data variable de data . Puede pensar en la input como el raw_input compuesto con una llamada eval .

>>> data = eval(raw_input("Enter a number: ")) Enter a number: 5 + 17 >>> data, type(data) (22, <type ''int''>)

Nota: debe tener cuidado cuando utilice la input en Python 2.x. Expliqué por qué se debe tener cuidado al usarlo, en esta respuesta .

Pero, raw_input no evalúa la entrada y devuelve como es, como una cadena.

>>> import sys >>> sys.version ''2.7.6 (default, Mar 22 2014, 22:59:56) /n[GCC 4.8.2]'' >>> data = raw_input("Enter a number: ") Enter a number: 5 + 17 >>> data, type(data) (''5 + 17'', <type ''str''>)

Python 3.x

La input Python 3.x y raw_input Python 2.x son similares y raw_input no está disponible en Python 3.x.

>>> import sys >>> sys.version ''3.4.0 (default, Apr 11 2014, 13:05:11) /n[GCC 4.8.2]'' >>> data = input("Enter a number: ") Enter a number: 5 + 17 >>> data, type(data) (''5 + 17'', <class ''str''>)

Solución

Para responder a su pregunta, ya que Python 3.x no evalúa y convierte el tipo de datos, tiene que convertir explícitamente a int s, con int , como este

x = int(input("Enter a number: ")) y = int(input("Enter a number: "))

Puede aceptar números de cualquier base y convertirlos directamente a base-10 con la función int , como esto

>>> data = int(input("Enter a number: "), 8) Enter a number: 777 >>> data 511 >>> data = int(input("Enter a number: "), 16) Enter a number: FFFF >>> data 65535 >>> data = int(input("Enter a number: "), 2) Enter a number: 10101010101 >>> data 1365

El segundo parámetro indica cuál es la base de los números ingresados ​​y luego, internamente, lo entiende y lo convierte. Si los datos ingresados ​​son incorrectos, lanzará un ValueError .

>>> data = int(input("Enter a number: "), 2) Enter a number: 1234 Traceback (most recent call last): File "<input>", line 1, in <module> ValueError: invalid literal for int() with base 2: ''1234''

Aparte de eso, tu programa se puede cambiar un poco, así

while True: ... ... if input("Play again? ") == "no": break

Puedes deshacerte de la variable de play usando break y while True .

PD : Python no espera ; al final de la línea :)


def dbz(): try: r = raw_input("Enter number:") if r.isdigit(): i = int(raw_input("Enter divident:")) d = int(r)/i print "O/p is -:",d else: print "Not a number" except Exception ,e: print "Program halted incorrect data entered",type(e) dbz() Or num = input("Enter Number:")#"input" will accept only numbers


n=int(input()) for i in range(n): n=input() n=int(n) arr1=list(map(int,input().split()))

el bucle for se ejecutará ''n'' número de veces. la segunda ''n'' es la longitud de la matriz. la última instrucción asigna los enteros a una lista y toma entradas en forma separada por espacios. También puede devolver la matriz al final de for loop.


play = True while play: #you can simply contain the input function inside an int function i.e int(input("")) #This will only accept int inputs # and can also convert any variable to ''int'' form x = int(input("Enter a number: ")) y = int(input("Enter a number: ")) print(x + y) print(x - y) print(x * y) print(x / y) print(x % y) if input("Play again? ") == "no": play = False