Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: fenix2000 en 18 Octubre 2017, 22:13 PM

Título: error programa python
Publicado por: fenix2000 en 18 Octubre 2017, 22:13 PM
Buenas, estoy creando un programa que almacena en una lista los nombres de cuatro países, a la misma vez tengo que almacenar en una lista las temperaturas medias de cada país durante tres meses.
Lo he intentado con el siguiente código
Código (python) [Seleccionar]

paises=[]
tempmens=[]
for x in range (4):
    pais = input("introduzca el nombre del pais")
    paises.append(pais)
    for k in range (3):
        temppa = []
        temperatura = input("introduzca la temperatura media de un mes")
        temppa.append(temperatura)
    tempmens.append(temppa)

print(paises)
print(tempmens)

Pero me tira este error:
line 4, in <module>
    pais = input("introduzca el nombre del pais")
  File "<string>", line 1, in <module>
NameError: name 'espana' is not defined
La verdad es que en este punto estoy bastante perdido, no se si estoy cometiendo un error garrafal o una nimiedad. ¿Podríais indicarme el error o cómo mejorar el código?
Gracias por su atención
Título: Re: error programa python
Publicado por: engel lex en 18 Octubre 2017, 22:26 PM
es raro,  escribiste espana en el codigo? porque está intentando interpretar eso
Título: Re: error programa python
Publicado por: fenix2000 en 18 Octubre 2017, 22:30 PM
Si, al ejecutar el programa me pide que introduzca el nombre del pais, asi que coloqué espana para probar
Título: Re: error programa python
Publicado por: engel lex en 18 Octubre 2017, 22:32 PM
me corre perfecto, revisa que hayas guardado y ejecutado el fichero correcto
Título: Re: error programa python
Publicado por: <Trocutor> en 18 Octubre 2017, 22:37 PM
Solo tienes que cambiar los inputs por raw_inputs, a mi me pasa de vez en cuando xD
Título: Re: error programa python
Publicado por: fenix2000 en 18 Octubre 2017, 22:40 PM
Cita de: <Trocutor> en 18 Octubre 2017, 22:37 PM
Solo tienes que cambiar los inputs por raw_inputs, a mi me pasa de vez en cuando xD
No se por qué pero esa es la solución xD.
Muchas gracias a los dos por ayudarme :D
Título: Re: error programa python
Publicado por: <Trocutor> en 18 Octubre 2017, 22:44 PM
Sinceramente yo tampoco se porque y llevo muchos años (3 años) sin saber la diferencia de input y raw_input.

Luego me informare de la diferencia xD

De nadaaa :D
Título: Re: error programa python
Publicado por: engel lex en 19 Octubre 2017, 01:21 AM
Cita de: <Trocutor> en 18 Octubre 2017, 22:44 PM
Sinceramente yo tampoco se porque y llevo muchos años (3 años) sin saber la diferencia de input y raw_input.

Luego me informare de la diferencia xD

De nadaaa :D


ahh eso es problema en python 2 alguna veces D: no lo recordaba XD

input toma el dato e intenta procesarlo y convertirlo a un tipo apropiado... raw_input toma el dato y lo retorna como string tal cual llegó... en python 3, por defecto input siempre se comporta como raw_input y el comportamiento de input fue eliminado
Título: Re: error programa python
Publicado por: <Trocutor> en 19 Octubre 2017, 15:06 PM
Uso python 3 no python 2 xD
Título: Re: error programa python
Publicado por: Yidu en 19 Octubre 2017, 20:37 PM
Cita de: <Trocutor> en 19 Octubre 2017, 15:06 PM
Uso python 3 no python 2 xD

Yo diría que esta línea de tu código:

Código (python) [Seleccionar]
temperatura = input("introduzca la temperatura media de un mes")

Debería modificarse a:

Código (python) [Seleccionar]
temperatura = int(input("introduzca la temperatura media de un mes"))

Se supone que esperas introducir un valor entero y no una cadena.

Título: Re: error programa python
Publicado por: fenix2000 en 19 Octubre 2017, 21:50 PM
Cita de: Yidu en 19 Octubre 2017, 20:37 PM
Yo diría que esta línea de tu código:

Código (python) [Seleccionar]
temperatura = input("introduzca la temperatura media de un mes")

Debería modificarse a:

Código (python) [Seleccionar]
temperatura = int(input("introduzca la temperatura media de un mes"))

Se supone que esperas introducir un valor entero y no una cadena.


Cierto no lo había pensado, igualmente poniendo raw_input() también funciona.
Gracias por comentarlo.