Python: algo estoy haciendo mal

Iniciado por Astergoth, 26 Mayo 2017, 23:32 PM

0 Miembros y 2 Visitantes están viendo este tema.

Astergoth

Hola a tod@s,

Como comente en otro post estoy aprendiendo python en mis momentos libres y todo genial, excepto en un ejercicio el cual no me sale ningún error de sintaxis pero el resultado no concuerda o ni aparece.

El caso es que tengo que escribir un programa (bastante sencillo) el cual debe:
- imprimir un mensaje de bienvenida
- solicitar al usuario 2 números enteros (n1, n2)
- hacer el cuadrado de todos los numeros que el usuario haya ingresado.
- imprimir mensaje de despedida.

Adjunto foto del codigo fuente del programa:


El caso es que en el segundo numero pongo "5" y me sale de resultado 16 por ejemplo, el primer numero me sale bien pero el segundo no.
Que he podido hacer mal??

Gracias de antemano

engel lex

realmente no diste basicamente nada de información... tu codigo está bien, y todo lo que dices es que no da el resultado esperado... usa print(x) en la linea 12 a ver si hace el recorrido esperado
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Astergoth

Cita de: engel lex en 27 Mayo 2017, 00:13 AM
realmente no diste basicamente nada de información... tu codigo está bien, y todo lo que dices es que no da el resultado esperado... usa print(x) en la linea 12 a ver si hace el recorrido esperado
Hola engel,

He hecho lo que me has dicho y parece no reconocer el segundo numero, pero no veo ningún error en el codigo, no se si será por la variable o por el "for".

Gracias

engel lex

no estás dando nada de información... que versión de python usas?

el codigo está bien

muestra que te dá y que esperas... preferiblemente copia y pega el codigo en lugar de usar fotos, se lee mejor
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Astergoth

#4
Cita de: engel lex en 27 Mayo 2017, 01:23 AM
no estás dando nada de información... que versión de python usas?

el codigo está bien

muestra que te dá y que esperas... preferiblemente copia y pega el codigo en lugar de usar fotos, se lee mejor

perdona, me suelo conectar al foro desde el movil.

uso python2.7 escrito con pluma,

el codigo es:

Código (python) [Seleccionar]
#!/usr/bin/env python

print ('Hola, bienvenido al problema 1.6.1')

def cua(num):
print num * num

n1 = input ("ingrese un numero: ")
n2 = input ("ingrese un numero: ")

def cuad():
for x in range (n1, n2):
cua (x)

cuad ()

print ('Asi termina el problema')]

* sin parentesis cuadrados
el resultado de "n1" lo da bien pero el de "n2" lo da mal o ni lo da, cosa que me parece extraña ya que el codigo esta hecho para que imprima los 2 resultados bien.
si lo ejecuto me pide los 2 numeros pero si pongo por ejemplo 2 y 4 me dice que el cuadrado de 4 es 9 o ni lo imprime.

gracias de nuevo.


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex

perdon para la proxima lo se.

engel lex

Código (python) [Seleccionar]
n1 = input ("ingrese un numero: ")
n2 = input ("ingrese un numero: ")

def cuad():
for x in range (n1, n2):
print(x)

cuad ()


usa ese codigo y dime si da el resultado esperado
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Astergoth

Cita de: engel lex en 27 Mayo 2017, 01:57 AM
Código (python) [Seleccionar]
n1 = input ("ingrese un numero: ")
n2 = input ("ingrese un numero: ")

def cuad():
for x in range (n1, n2):
print(x)

cuad ()


usa ese codigo y dime si da el resultado esperado

ingresando 2 y 4 me dice 2 y 3 respectivamente, es como si le restase 1 al segundo valor.

engel lex

Cita de: Astergoth en 27 Mayo 2017, 02:06 AM
ingresando 2 y 4 me dice 2 y 3 respectivamente, es como si le restase 1 al segundo valor.

exacto, así funciona...

como es comunmente usado para for es equivalente a

for (i = n1; i < n2; i++)

por eso es importante leerse la documentación del lenguaje con el que trabajas
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Astergoth

Cita de: engel lex en 27 Mayo 2017, 02:10 AM
exacto, así funciona...

como es comunmente usado para for es equivalente a

for (i = n1; i < n2; i++)

por eso es importante leerse la documentación del lenguaje con el que trabajas

justamente estaba leyendo la docu de for en el interprete, te lo iba a decir, perdona el despiste.
por cierto la firma tiene una razón que no veas.

muchas gracias