Test Foro de elhacker.net SMF 2.1

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 (python) [Seleccionar]
def costo_hotel(noches):
   return 140 * noches
   
def costo_del_vuelo(ciudad):
   cities = {
       "Córdoba": 821,
       "Iguazú": 941,
       "Ushuaia": 1280,
       "Bariloche": 1848,
   }
   return cities[ciudad]


def alquiler_de_auto(dias):
   costo = dias * 338
   if dias >= 7:
       costo = costo - 100
   elif dias >= 3:
       costo = costo - 50
   return costo

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)


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

   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
Cita de: 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

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
Cita de: 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

Entonces debería quedar así:

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:
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:

# -*- 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
Cita de: engel lex en 15 Enero 2015, 06:52 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 (python) [Seleccionar]
def funcionX(parametro):
  dentro_de_la_funcion=parametro
  salida = "hola mundo"
  return salida

print funcionX("x")
Título: Re: Problema en python [alguno me ayuda??]
Publicado por: Joe Fraddy en 15 Enero 2015, 07:11 AM
Cita de: engel lex en 15 Enero 2015, 07:00 AM
Código (python) [Seleccionar]
def funcionX(parametro):
  dentro_de_la_funcion=parametro
  salida = "hola mundo"
  return salida

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) 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:
# -*- coding: Windows-1252 -*-

Saludos
Título: Re: Problema en python [alguno me ayuda??]
Publicado por: Joe Fraddy en 15 Enero 2015, 16:53 PM
Cita de: Eleкtro en 15 Enero 2015, 07:22 AM
Hola

1) 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:
# -*- coding: Windows-1252 -*-

Saludos

Gracias por la respuesta:

¿Que significa lo que has puesto del coding?
# -*- 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
Cita de: iZafNat en 15 Enero 2015, 16:53 PM¿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-1252Windows-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