[Python Y Gambas] Ejemplo De Los Dolares Y Céntimos


Objetivo: [Python Y Gambas] Ejemplo De Los Dolares Y Céntimos
Hola!.

Después de ver el ejemplo de Scott en el curso de Coursera sobre como va usando el tratado de cadenas y al final
Joe crea una aplicación mas interactiva, observo que en el ejemplo que hace Joe no se aprecia esto:

Si hablamos de céntimos, no podemos decir 12.0 céntimos.

Hice el ejemplo en gambas y si funciona.
Public Sub Main()

Print Convertir(11.23)
Print Convertir(11.20)
Print Convertir(1.12)
Print Convertir(12.01)
Print Convertir(1.01)
Print Convertir(0.01)
Print Convertir(1.00)
Print Convertir(0)
End

'Convierte a plural la cadena si es necesario
Public Function convierteUnidades(valor As Integer, nombre As String) As String

Dim resultado As String

resultado = Str(valor) & " " & nombre
If valor > 1 Then
resultado = resultado & "s"
Endif
Return resultado

End

'Convierte de xx.yy a xx dolares y yy centimos
Public Function Convertir(valor As Float) As String

Dim dolares As Integer
Dim centimos As Integer
Dim dolares_cadena As String
Dim centimos_cadena As String

' Repartimos en dolares y centimos
dolares = Int(valor)
centimos = Round(100 * (valor - dolares))

dolares_cadena = convierteUnidades(dolares, "dolar")
centimos_cadena = convierteUnidades(centimos, "cent")

'Convertimos a cadenas
If dolares = 0 And centimos = 0 Then
Return "Sin blanca!"
Else If dolares = 0 Then
Return centimos_cadena
Else If centimos = 0 Then
Return dolares_cadena
Else
Return dolares_cadena & " y " & centimos_cadena
Endif

End


En cambio en Python, se obseva el .0 al final de los céntimos, creo que Joe cambio algo.
Observemos el código de Scottt:
# Handle single quantity
def convert_units(val, name):
result = str(val) + " " + name
if val > 1:
result = result + "s"
return result

# convert xx.yy to xx dollars and yy cents
def convert(val):
# Split into dollars and cents
dollars = int(val)
cents = round(100 * (val - dollars))

# Convert to strings
dollars_string = convert_units(dollars, "dollar")
cents_string = convert_units(cents, "cent")

# return composite string
if dollars == 0 and cents == 0:
return "Broke!"
elif dollars == 0:
return cents_string
elif cents == 0:
return dollars_string
else:
return dollars_string + " and " + cents_string


# Tests
print convert(11.23)
print convert(11.20)
print convert(1.12)
print convert(12.01)
print convert(1.01)
print convert(0.01)
print convert(1.00)
print convert(0)


Produce el .0 al final de céntimos.

Después de ver el ejemplo de Joe en el video no lo hace, pero el ejemplo para codeskulptor si. Donde crea la aplicación mas interactiva.
Supongo que de alguna forma (que no vi), le quita el .0.

Saludos

última edición por Shell el Sabado, 26 Octobre 2013, 21:50; editado 1 vez
Objetivo: Re: [Python Y Gambas] Ejemplo De Los Dolares Y Céntimos
Perdonar, no os puse el ejemplo que estaba haciendo a la vez que lo decía Joe:

Os pongo todo el código y podéis pegar en:

www.codeskulptor.org

# Aplicación interactiva que convertira un valor real
# en dolares y centimos a dos valores enteros de dolares y centimos.

import simplegui

# Definimos las variables globales
valor = 3.12

# Handle single quantity
def convert_units(val, name):
result = str(val) + " " + name
if val > 1:
result = result + "s"
return result

# convert xx.yy to xx dollars and yy cents
def convert(val):
# Split into dollars and cents
dollars = int(val)
cents = round(100 * (val - dollars))

# Convert to strings
dollars_string = convert_units(dollars, "dollar")
cents_string = convert_units(cents, "cent")

# return composite string
if dollars == 0 and cents == 0:
return "Broke!"
elif dollars == 0:
return cents_string
elif cents == 0:
return dollars_string
else:
return dollars_string + " and " + cents_string


# definimos el o los manejadores de dibujo
def draw(canvas):
canvas.draw_text(convert(valor), [60, 110], 24,"White")

# define un manejador de campo de entrada de texto
def input_handler(text):
global valor
valor = float(text)


# Creamos un marco
frame = simplegui.create_frame("Convertidor",400,200)


# Registramos los manejadores de eventos
frame.set_draw_handler(draw)
frame.add_input("Entre valor",input_handler,100)

# Comenzamos el marco
frame.start()


Os podía haber pasado un enlace, así no se pierde.
Ups, pues si es que chillón el color..

Saludos


Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.154s (PHP: -16% SQL: 116%)
Consultas SQL: 30 - Debug off - GZIP Activado