Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Joe Fraddy en 15 Enero 2015, 06:07 am



Título: Problema en python [alguno me ayuda??]
Publicado por: Joe Fraddy en 15 Enero 2015, 06:07 am
Este es mi script:

Código
  1. def costo_hotel(noches):
  2.    return 140 * noches
  3.  
  4. def costo_del_vuelo(ciudad):
  5.    cities = {
  6.        "Córdoba": 821,
  7.        "Iguazú": 941,
  8.        "Ushuaia": 1280,
  9.        "Bariloche": 1848,
  10.    }
  11.    return cities[ciudad]
  12.  
  13.  
  14. def alquiler_de_auto(dias):
  15.    costo = dias * 338
  16.    if dias >= 7:
  17.        costo = costo - 100
  18.    elif dias >= 3:
  19.        costo = costo - 50
  20.    return costo
  21.  
  22. def costo_viaje(cuidad, dias, otros_gastos):
  23.    return aquiler_de_auto(dias) + costo_del_vuelo(cuidad) + costo_hotel(dias) + otros_gastos
  24.    print costo_viaje('Bariloche',5,600)

Parece que el problema esta en la última parte, en el print:

Código:
    print costo_viaje('Bariloche',5,600)


Título: Re: Problema en python [alguno me ayuda??]
Publicado por: engel lex en 15 Enero 2015, 06:16 am
no se a que quieres llegar, pero tienes varios errores...

primero... el print no puede estar dentro de la función... si no vas a crear un loop infinito... e igual no se llama solo

segundo... falta encode para soportar acentos

tercero otros gastos no está definido... corrige esos errores y explicate que quieres... porque no dijiste nada :s


Título: Re: Problema en python [alguno me ayuda??]
Publicado por: Joe Fraddy en 15 Enero 2015, 06:24 am
no se a que quieres llegar, pero tienes varios errores...

primero... el print no puede estar dentro de la función... si no vas a crear un loop infinito... e igual no se llama solo

segundo... falta encode para soportar acentos

tercero otros gastos no está definido... corrige esos errores y explicate que quieres... porque no dijiste nada :s

Es un ejercicio que me encargaron: esta es la instrucción: mostrar en pantalla (print) el costo_viaje a "Bariloche" por 5 días con 600 pesos más para otros gastos.

Según el profesor, todo esta bien el error radica en el print, el mensaje que me da es este: ¡Uy! Probá otra vez. ¡Uy! ¿Borraste sin querer la función costo_viaje?


Título: Re: Problema en python [alguno me ayuda??]
Publicado por: engel lex en 15 Enero 2015, 06:26 am
bueno... el print no debe estar dentro de la funcion, el print debe ser externo a todo


Título: Re: Problema en python [alguno me ayuda??]
Publicado por: Joe Fraddy en 15 Enero 2015, 06:33 am
bueno... el print no debe estar dentro de la funcion, el print debe ser externo a todo

Entonces debería quedar así:

Código:
def costo_viaje(cuidad, dias, otros_gastos):
    return aquiler_de_auto(dias) + costo_del_vuelo(cuidad) + costo_hotel(dias) + otros_gastos
print costo_viaje('Bariloche', 5, 600)

Puedes ser mas específico???

Si lo dejo así (fuera) me da este error el compilador:
Código:
Traceback (most recent call last):
  File "python", line 24, in <module>
  File "python", line 23, in costo_viaje
NameError: global name 'aquiler_de_auto' is not defined

Parece que es un error lógico


Título: Re: Problema en python [alguno me ayuda??]
Publicado por: engel lex en 15 Enero 2015, 06:36 am
ya resolviste un error... el error no es logico... revisa bien tus funciones... por que dice no definido? (lee bien tu codigo)


Título: Re: Problema en python [alguno me ayuda??]
Publicado por: Joe Fraddy en 15 Enero 2015, 06:48 am
Si meto:

Código:
# -*- coding: utf-8 -*-

al principio correo en mi computadora (por supuesto no arroja ningún dato) pero tampoco me muestra ningún error


Título: Re: Problema en python [alguno me ayuda??]
Publicado por: engel lex en 15 Enero 2015, 06:52 am
correo?


Título: Re: Problema en python [alguno me ayuda??]
Publicado por: Joe Fraddy en 15 Enero 2015, 06:56 am
correo?


Perdón es que puse lo de encoding y que corre.

Pero bueno, en caso de que estuviera bien la función, ¿como le hago para llamar a mi función y hacer que imprima en pantalla?


Título: Re: Problema en python [alguno me ayuda??]
Publicado por: engel lex en 15 Enero 2015, 07:00 am
Código
  1. def funcionX(parametro):
  2.  dentro_de_la_funcion=parametro
  3.  salida = "hola mundo"
  4.  return salida
  5.  
  6. print funcionX("x")


Título: Re: Problema en python [alguno me ayuda??]
Publicado por: Joe Fraddy en 15 Enero 2015, 07:11 am
Código
  1. def funcionX(parametro):
  2.  dentro_de_la_funcion=parametro
  3.  salida = "hola mundo"
  4.  return salida
  5.  
  6. print funcionX("x")

Gracias ya quedó: solo tenia que borrar la penultima linea, la del return, el programa no sirve para nada, solo era para una clase y ya sabes hay que obedecer al maestro jejeje


Título: Re: Problema en python [alguno me ayuda??]
Publicado por: Eleкtro en 15 Enero 2015, 07:22 am
Hola

1)
Código:
NameError: global name 'aquiler_de_auto' is not defined
El error se explica por si mismo, estás intentando llamar a una función que no ha sido no definida, es decir, no existe.
Y la razón de que no exista es porque cometiste un error al escribir el nombre de dicha función... se puede ver a simple vista :P.

2) Lo de la codificación de texto... ya te lo han explicado, pero usa la correcta:
Código:
# -*- coding: Windows-1252 -*-

Saludos


Título: Re: Problema en python [alguno me ayuda??]
Publicado por: Joe Fraddy en 15 Enero 2015, 16:53 pm
Hola

1)
Código:
NameError: global name 'aquiler_de_auto' is not defined
El error se explica por si mismo, estás intentando llamar a una función que no ha sido no definida, es decir, no existe.
Y la razón de que no exista es porque cometiste un error al escribir el nombre de dicha función... se puede ver a simple vista :P.

2) Lo de la codificación de texto... ya te lo han explicado, pero usa la correcta:
Código:
# -*- coding: Windows-1252 -*-

Saludos

Gracias por la respuesta:

¿Que significa lo que has puesto del coding?
Código:
# -*- coding: Windows-1252 -*-

¿Es para usuarios de Windows? porque yo no uso Windows.

Saludos xD


Título: Re: Problema en python [alguno me ayuda??]
Publicado por: Eleкtro en 16 Enero 2015, 05:17 am
¿Que significa lo que has puesto del coding?

Cada codificación usa un set de caracteres distintos.

Windows-1252
Cita de: http://en.wikipedia.org/wiki/Windows-1252
Windows-1252 or CP-1252 is a character encoding of the Latin alphabet,

latin-1
http://en.wikipedia.org/wiki/ISO/IEC_8859-1

utf-8
http://www.utf8-chartable.de/

PD: De todas formas, utf-8 también te sirve.

saludos