Python - Duda ejecución programa muy simple

 
Vista:

Duda ejecución programa muy simple

Publicado por Antonio (2 intervenciones) el 16/08/2018 00:13:16
Hola, estoy comenzando a programar con recursos que encuentro en la web, y me sucede lo siguiente al ejecutar este código en Spyder (Python 3.6):

1
2
3
4
5
6
7
8
9
def main():
    print ("Se calcularán cuadrados de números")
 
    n1 = input("Ingrese un número entero: ")
    n2 = input("Ingrese otro número entero: ")
 
    for x in range(n1, n2):
        print (x*x)
    print ("Es todo por ahora")


File "<ipython-input-3-d34b2b142843>", line 10, in main
for x in range(n1, n2):

TypeError: 'str' object cannot be interpreted as an integer

¿Cuál es el problema y qué debo añadirle al código?

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Duda ejecución programa muy simple

Publicado por tincopasan (1082 intervenciones) el 16/08/2018 05:15:40
pues ahí está la respuesta:
1
TypeError: 'str' object cannot be interpreted as an integer
input() devuelve una cadena(string)
y la operación asume que son enteros(integer)
por lo tanto te falta convertir la cadena en entero_
1
n1= int(input("etc"))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
sin imagen de perfil
Val: 765
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Duda ejecución programa muy simple

Publicado por dario (185 intervenciones) el 16/08/2018 05:16:18
Hola, tu problema es que estas tratando de multiplicar strings (cadenas de caracteres), con la instruccion INPUT lo que haces es almacenar cadenas de caracteres.

Para numeros enteros deberias usar:
n1 = int(input("Ingrese un numero entero: "))
n2 = int(input("Ingrese otro numero entero: "))

Salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Duda ejecución programa muy simple

Publicado por kip (257 intervenciones) el 16/08/2018 15:27:49
Hola Dario, el problema no es la multiplicación, aunque obviamente no se puede multiplicar dos strings, en este caso es range:


1
2
3
4
5
>>> range('1', '4')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object cannot be interpreted as an integer
>>>

The arguments to the range constructor must be integers (either built-in int or any object that implements the __index__ special method).
https://docs.python.org/3/library/stdtypes.html#range
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 765
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Duda ejecución programa muy simple

Publicado por dario (185 intervenciones) el 16/08/2018 15:46:52
Hola, tu mismo codigo arreglado. Fijate en lo que hice.
Salu2.

1
2
3
4
5
6
7
8
9
10
11
12
def main():
    print ("Se calcularán cuadrados de números")
 
    n1 = int(input("Ingrese un número entero: "))
    n2 = int(input("Ingrese otro número entero: "))
 
    for x in range(n1, n2+1):
        print (x*x)
 
    print ("Es todo por ahora")
 
main()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar