domingo, 28 de marzo de 2021

Ejer 10_Funciones, factura de un viaje con diccionario

#ejemplo funciones, otra variante mejor

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(ciudad,dias,otros_gastos):

    return(alquiler_de_auto(dias)+costo_hotel(dias)+costo_del_vuelo(ciudad)+otros_gastos)


print (costo_viaje("Bariloche",5,600)) #imprime el total


sábado, 27 de marzo de 2021

Ejercicio 9_Funciones con parámetro opcional, argumentos arbitrarios *arg, parámetros nombrados (no posicional) y parámetros nombrados recibiendo un diccionario.

""" 

    Nuevos Ejercicios funciones


    27 Marzo

   Dicta n clas== mar

Ejemplo 1: Funciones con parámetro opcional

"""



def mi_funcion_sin_valores_defecto(nombre, apellido):

    print(nombre + " " + apellido)



def mi_funcion_con_valores_defecto(nombre, apellido=""):

    print(nombre + " " + apellido)



# mi_funcion_sin_valores_defecto("Toto") # Así , falla, porque estoy pasando solo un argumento a una funcion que requiere dos


mi_funcion_con_valores_defecto("Toto")  # Así , no falla ya que el segundo parametro tiene valor por defecto en la función

"""

Ahora  un ejemplo perfecto de lo que en Python se conoce como Arbitrary Arguments (argumentos arbitrarios), comúnmente abreviados como *args.

Aquí te explico brevemente qué está pasando "bajo el capó":

¿Cómo funciona el asterisco (*)?

  1. Empaquetamiento: El símbolo * le dice a Python: "Toma todos los argumentos posicionales que envíe el usuario y mételos dentro de una tupla llamada nenos".

  2. Flexibilidad: Gracias a esto, tu función lista_nenos es dinámica. Puedes pasarle 3 nombres, 10 o ninguno, y no dará error.

  3. Es un iterable: Como bien notaste en tu comentario, al ser una tupla, puedes recorrerla con un bucle for o acceder a elementos específicos por su índice (empezando desde 0).

"""


def lista_nenos(*nenos):

    # print(nenos[2])


    for n in nenos:

        print(n)  # muestro que estoy trabajando con un iterable



lista_nenos("Emil", "Tobias", "Linus")

# cualquier iterable(tuple, lista,... )comienza a contar desde 0


"""

Otro ejemplo "parámetros nombrados"

_frase corta para definirlo

Los parámetros nombrados permiten pasar argumentos a una función indicando el nombre del parámetro, de modo que el orden de los argumentos no es relevante.

""" 


def funcionCualquiera(apellido, edad, nombre):

    print(nombre + " " + apellido + ":" + edad)



# Keyword Arguments - Parámetros nombrados

funcionCualquiera(nombre="Maria", apellido="perez", edad="40")


# DIFÍCIL-->Ver kwargs en mas detalle (parámetros arbitrarios nombrados, entran a función como un diccionario)


def mif_funcion_kwargs(**neno):

  print("His last name is " + neno["lname"]) 


mif_funcion_kwargs(fname = "Xan", lname = "Carballo")

"""

Explicación:  

def mif_funcion_kwargs(**neno):

Los dos asteriscos ** indican que la función recibe parámetros arbitrarios nombrados, **kwargs hace que los parámetros arbitrarios nombrados entren en la función en forma de diccionario (dict).


Python agrupa esos parámetros en un diccionario


La variable neno siempre será un dicccionario, (dict).

En Python:

  • dict es el nombre del tipo

Python convierte automáticamente esto en:

neno = { "fname": "Xan", "lname": "Carballo" }

Por eso puedes acceder así:

print("His last name is " + neno["lname"])

Salida:

His last name is Carballo

"""









miércoles, 24 de marzo de 2021

Ejercicio 8_Contador de vocales y contando rojo

# Contador de Vocales, expilca primero el ejemplo inferior, más sencillo:

s = 'fadrtipejo712azcbobobegghakl'

numeroVocales=0
for vocal in s:
    if vocal in 'aeiou':
        numeroVocales+=1





print('Numero de vocales: '+str(numeroVocales)) # str convierte el número en cadena
 
"""
PRIMERO Vamos a desglosar paso a paso lo que hace este código (parecido y más sencillo que el de arriba):
 
s = 'fadrtipejo712azcbobobegghakl'

for vocal in s:
print(vocal)
 

🔹 1. s = 'fadrtipejo712azcbobobegghakl'

Aquí se crea una cadena de texto (string) llamada s que contiene varias letras y números.




🔹 2. for vocal in s:

Este es un bucle for que recorre cada carácter dentro de la cadena s.

  • En la primera vuelta, vocal vale 'f'

  • En la segunda, vale 'a'

  • En la tercera, 'd'

  • …y así hasta el final de la cadena.


🔹 3. print(vocal)

En cada vuelta del bucle, el programa imprime el carácter actual.

Entonces, si ejecutas este código, la salida será:

f
a
d
r
t
i
p
e
j
o
7
1
2
a
z
c
b
o
b
o
b
e
g
g
h
a
k
l
 

 

"""

 
# Contando Rojo, ejemplo más compicado:

# Contando Rojo
s = 'graffirojorojorfrojob rojo'
nPosicion=0
doLoop=True
numRojos=0
while(doLoop):
    nPosicion = s.find('rojo',nPosicion) # find devuelve -1 cuando NO encuentra lo que le pedimos
    if (nPosicion!=-1):
        print("Encontrado 'rojo' en posicion: "+str(nPosicion))
        numRojos+=1
        nPosicion+=1
    else:
        doLoop=False
 

print("Veces que se repite 'rojo' en la cadena:: "+str(numRojos)) 


#Nuevo ejemplo .join con lista de números y explicación

l = [1, 2, 3, 4, 5, 6]

output = "_".join(str(e) for e in l)

print(output)

"""

Explicación 

join() solo funciona con cadenas de texto, no con números.


Por eso hacemos str(e) para convertir cada elemento numérico a cadena.


El generador (str(e) for e in l) produce ["1", "2", "3", "4", "5", "6"].


➡️ Resultado:


1_2_3_4_5_6

🔹 2. Caso de lista (o tupla) de cadenas


miTuple = ("Juan", "Marta", "Eva")

x = "#".join(miTuple)

print(x)



Aquí no hace falta convertir, porque los elementos ya son strings.


join() une directamente "Juan", "Marta" y "Eva" con # como separador.


➡️ Resultado:


Juan#Marta#Eva

"""




 



domingo, 14 de marzo de 2021

Ejercicio 7_La función print(), concatenar variables




"""

USA  UN  INTÉRPRETE ON LINE PYTHON 3, pon eso en google y aparecen varios.

Si usas replit.com    primero  LOGIN y después CREATE

Pones replit python 3 en google y vas a https://replit.com/languages/python3

Si ya estás  con la cuenta de google abierta no tienes que logearte 

"""

x = "Ponteareas"

y = "es"

z = "interesante"

print(x,   y,z)

x = "Vigo  " #pon espacios al final de cada cadena si no lo une todo

y = "es "

z = "impresionante"

print(x+y+z)

x = 8

y = 10

print(x + y)#el operador + con números suma 

x = 5

y = "   Ana"

z=8

#print (x+y) da error, abajo no, el operador + une cadenas, no números y cadenas

print(str(x) + y)

print (x,y) #la coma como separador une variables de cualquier tipo, no tienes que utilizar el comando str() para convertir número en string

print (x,"     ", z)

print (x,z)

y="Barcelona"

print (y+"  "+str(z))

#print (y+"  "+z) da error, solo puedes concatenar str, no int a str

#Ojo al poner los comentarios y quitar


sábado, 13 de marzo de 2021

Ejercicio 6 _ejemplos interesantes de funciones_empezar con funciones_ 8 agosto 2016 parte 2 __%marcador de posición_sustitución

"""

ejer2Codecademy 8 agosto 2016 Funciones (parte 2)

DICTAR:

Para principiantes:

%d marca el lugar donde Python va a poner un número entero dentro del texto.

Un poco de contexto extra :

En esta línea:

print("%d a la %d potencia es %d." % (base, exponente, resultado))
  • El string tiene tres %d

  • La tupla (base, exponente, resultado) tiene tres valores

  • Python los reemplaza en orden

Es decir:

  • primer %dbase

  • segundo %dexponente

  • tercer %dresultado

Nota didáctica útil

  • %d se usa para enteros

  • %f para decimales

  • %s para texto

Este estilo de formateo es  válido y muy usado para aprender.


El % es un comando de sustitución: le dice a Python que reemplace los marcadores (%d) por los valores que vienen después.

O un poquito más completo:

El % sirve para sustituir partes del texto por valores de variables.

Técnicamente, esto se llama formateo de strings, pero por ahora lo vamos a pensar como una sustitución.

Eso es excelente pedagogía: primero el concepto claro, después el nombre formal.

Mini resumen:

  • %d → lugar donde va un número entero

  • % → comando de sustitución

  • (base, exponente, resultado) → valores que se van a insertar

 Otra cosa_ejer 1 de aquí:

1️⃣ El texto entre triple comillas """ ... """

def spam(): """ Esta funcion imprime la palabra Huevos!"""

Eso NO es un comentario normal.
Se llama docstring (documentation string).

🔹 ¿Para qué sirve?

  • Documentar qué hace la función

  • Python la guarda y se puede consultar después

Por ejemplo:

help(spam)

o

print(spam.__doc__)

👉 O sea, Python sí usa esa información, no la ignora.


2️⃣ Las líneas que empiezan con #

# Dentro de una función , un comentario con triple comilla se llama "docstring" # y cumple con otro objetivo además de ser un comentario

Esto sí son comentarios normales:

  • Solo sirven para que los humanos lean el código

  • Python los ignora completamente


🔑 Entonces, ¿por qué dice que """   cumple “otro objetivo”?

Porque el texto entre triple comillas:

✔ No solo “comenta”
✔ También documenta oficialmente la función
✔ Puede verse con help()
✔ Puede usarse en documentación automática

Un comentario con # no puede hacer eso.

""" 

#¡Definí tu función `spam`

def spam():
    """ Esta funcion imprime la palabra Huevos!"""
    # Dentro de una función , un comentario con triple comilla se llama "docstring" y cumple con otro
    # objetivo ademas de ser un comentario    
    print ("Huevos!")




# Definí tu función `spam` arriba de esta línea.
spam() #al llamar a una función no se debe poner espacio antes del paréntesis



#ejer 3Codecademy

def potencia(base,exponente):  # Agregá tus parámetros acá.
    resultado = base**exponente
    print ("%d a la %d potencia es %d." % (base, exponente, resultado))

potencia(37,4)  # Agregá tus parámetros acá.


# ejer6Codecademy
"""

🧠 ¿Qué hace este código?

  1. numero % 3

    • El símbolo % significa resto de una división.

    • Por ejemplo:

      • 9 % 3 = 0 → porque 9 se divide exactamente entre 3

      • 10 % 3 = 1 → sobra 1

  2. == 0

    • Comprueba si el resto es cero.

    • Es decir: pregunta
      👉 “¿Este número es divisible entre 3?”

  3. if numero % 3 == 0:

    • Si el número sí es divisible entre 3, se ejecuta lo que está debajo.

  4. return cubo(numero)

    • cubo(numero) es una función que calcula el cubo del número
      (por ejemplo: 43=4×4×44³ = 4 × 4 × 4).

    • return devuelve ese resultado.


📌 En palabras sencillas

Si el número se puede dividir entre 3 sin que sobre nada, el programa devuelve su cubo.


✏️ Ejemplo práctico

Si:

numero = 6
  • 6 % 3 == 0 → ✅ verdadero

  • Se calcula cubo(6)6 × 6 × 6 = 216

  • El programa devuelve 216

Si:

numero = 5
  • 5 % 3 == 0 → ❌ falso

  • No se ejecuta el return


"""

def cubo(numero):
    """ Funcion cubo(float or int numero) --> float/int 
        Devuelve el parametro numero elevado al cubo
        ATENCION: Parametro obligatorio: no tiene valor por
        defecto
    """ 
    return (numero**3)

def por_tres(numero):
    if(numero%3==0):
        return(cubo(numero))
        
    else:
        return(False)



print (por_tres(22))

#ejemplo Reducir complejidad en las funciones para reducir el número de ciclos usados por el procesador para ejecutar 

# Explicación_paso a paso abajo


def p(numero):
    ret=0
    if(numero%3==0):
        ret=numero/3
  

    return(ret)        



resultado=0

resultado = p(3)+100                
print ("Resultado 1 : %.2f" % resultado)        


resultado = p(2)+150

print ("Resultado 2 : %.2f" % resultado)  

"""

🧩 Explicación_paso a paso

1️⃣ La función p(numero)

  • def p(numero): → define una función llamada p que recibe un número.

  • ret = 0 → crea una variable ret que empieza valiendo 0.

  • if(numero % 3 == 0): → pregunta: “¿el número se puede dividir entre 3 sin que sobre nada?”

  • ret = numero / 3 → si el número es divisible entre 3, entonces ret pasa a valer el número dividido entre 3.

  • return ret → devuelve el valor de ret al lugar donde se llamó la función.

En palabras simples:

“La función p toma un número y devuelve un tercio de ese número si es divisible entre 3, y 0 si no lo es.”


2️⃣ Primer cálculo: p(3) + 100

resultado = p(3) + 100
  • Llamamos a p(3):

    • 3 % 3 == 0 ✅ → divisible entre 3

    • ret = 3 / 3 = 1.0

  • Luego sumamos 100:

    • 1.0 + 100 = 101.0

  • Se imprime con 2 decimales:

Resultado 1 : 101.00

3️⃣ Segundo cálculo: p(2) + 150

resultado = p(2) + 150
  • Llamamos a p(2):

    • 2 % 3 == 0 ❌ → no divisible entre 3

    • ret sigue siendo 0

  • Luego sumamos 150:

    • 0 + 150 = 150.0

  • Se imprime:

Resultado 2 : 150.00

4️⃣ Resumen visual de la función

numerodivisible entre 3?ret devuelto
31.0
2No0

5️⃣ Conceptos importantes 

  1. % → resto de la división

  2. if → condición, “solo haz esto si…”

  3. return → devuelve un valor de la función

  4. .2f → imprime el número con 2 decimales


"""
     

EJERCICIO 5_Función con facturas en un restaurante

Tan bueno como w3shools  

https://learnpython.org/

 apuntes python 3 con ejercicios 

Walter

En w3schools hay  html y css también, muy buenos.

#Ejercicio 5

#¡¡¡OJO!!! (factura) es siempre el parámetro en ejemplo 1

#Ejemplo  Funciones facturas

def impuesto(factura):  #factura es el parámetro de la función. Toda función se define con def
    """Le agrega un impuesto del 8% a la factura del restaurante."""
    factura *= 1.08   # Esto es : factura = factura * 1.08
    print ("Con impuesto: %f" % factura)
    return factura

def propina(factura):
    """Le agrega una propina del 15% a la factura del restaurante."""
    factura *= 1.15
    print ("Con propina: %f" % factura)
    return factura
    
comida_costo = 150
comida_con_impuesto = impuesto(comida_costo)
comida_con_propina = propina(comida_con_impuesto) 


#Ejemplo 1 Funciones 8-8-2016




## Mismo resultado que la anterior, pero modificada para observar comportamiento.

def impuesto(xx):
pipi = xx * 1.08
return pipi def propina(ff):
maria= ff * 1.15
return maria comida_costo = 100
comida_con_impuesto = impuesto(comida_costo)
print ("El resultado de ejecutar impuesto(comida_costo) ha sido %f" % comida_con_impuesto) comida_con_propina = propina(comida_con_impuesto)
print ("El resultado de ejecutar propina(comida_con_impuesto) ha sido %.2f" % comida_con_propina)


#ejemplo 3 Funciones
def impuesto(xx):
pipi = xx * 1.08
return pipi def propina(ff):
maria= ff * 1.15
return maria comida_costo = 100
# En este ejemplo, pasamos como parámetro (o argumento) el resultado de impuesto(comida_costo)
# directamente a propina(). De esa manera, limitamos el consumo de memoria inútil con variables
# innecesarias. Esto es importante en grandes programas o bien en HSL´s ( High Speed Loops: Bucles de
# Alta Velocidad)
print ("Su factura es de %.2f" % propina(impuesto(comida_costo)))




Varias funciones_ejer 4

En programación, buscador de aplicaciones de LINUX, abajo,  buscamos un editor de texto plano: GEANY  (Yo) O bluefish 2.2.12 (mr) y  guardad el ejercicio  con extensión.py (wal)

o si está GEDIT







"""
Ejercicio con varias funciones
Puedes comentar algunas funciones con # para ver como se ejecuta el programa
ingresa 1 para dia y dos para noche en la ultima función

DICTAR:

Tiene un entradaUsuario=int(input("Ingrese código: ")) porque el imput devuelve cadena,

hay que pasarlo a entero.

parámetro de la función saludo: (opcional) Saludo que se va a dar, por defecto es : Que tenga buen día

Dale a enter después de ingresar el número

Detalle importante:

En Python, en cuanto se ejecuta un return, la función termina inmediatamente y se sale de ella. No se evalúa nada más dentro de esa función.

Una función puede tener varios return, pero solo uno se ejecuta en cada llamada.

W3sch.......♡♡♡♡

Dictr_abaj

M_r

"""


def saludo(nombre,apellido,saludo="Que tenga buen día"):
print("Función de saludo")
print(saludo+" "+nombre+" "+apellido )


def generaSaludo(nombre, apellido, saludo="Que tenga buen día"):
"""
:param nombre: Nombre de la person
:param apellido: Apellido de la persona
:param saludo: (opcional) Saludo que se va a dar, por defecto es : Que tenga buen día
:return:
"""
saludoGenerado=saludo + " " + nombre + " " + apellido
return(saludoGenerado)

# dia_noche_mal: Funcion con mas de un return: Rompe estructura de función.
# SI bien, ejecuta correctamente, no es bueno desde el punto de vista de legibilidad.
def dia_noche_mal(cod):
if cod==1:
return("Es de dia")
else:
return("Es de noche")


# dia_noche_bien: Solo un return: Estructura de funcion intacta.

def dia_noche_bien(cod):
valorRetorno="Parámetro incorrecto: 1 para dia y 2 para noche"

if cod==1:
valorRetorno="Es de dia"
elif cod==2:
valorRetorno="Es de noche"
return (valorRetorno)




# --- Aqui acaba la definición de funciones

# main


saludo("Tomás", "Carballo","Muy buenas")

saludo("Josefa", "Prieto","Adiós")

saludo("Monica", "Robledal")

saludoCLiente=generaSaludo("Julio","Miele","Muchas gracias")

print(saludoCLiente)

print(dia_noche_mal(0))

entradaUsuario=int(input("Ingrese código: "))

print(dia_noche_bien(entradaUsuario))



"""

Exactamente: 👌

✔️ Definiciones correctas

🔹 Parámetros

Son las variables que se definen en la función y reciben valores cuando la función se ejecuta:

def generaSaludo(nombre, apellido, saludo="Que tenga buen día"):

👉 Aquí:

  • nombre

  • apellido

  • saludo
    son parámetros de la función.


🔹 Argumentos

Son los valores reales que se pasan a la función cuando la llamamos:

generaSaludo("Julio", "Miele", "Muchas gracias")

👉 Aquí:

  • "Julio"

  • "Miele"

  • "Muchas gracias"
    son argumentos.


🧠 Frase clave:

Los parámetros se definen, los argumentos se envían.

O también:

  • Parámetros → van en la definición de la función

  • Argumentos → van en la llamada a la función





Ahora + difícil, DICT_R

Explicación saludoGenerado:

  • saludoGenerado se define dentro de la función, por lo tanto su ámbito (scope) es local a esa función.
    Una vez que la función termina, esa variable desaparece del contexto externo.
    Por eso, no puedes acceder a saludoGenerado fuera de la función.

Solución correcta:

Para usar el valor fuera de la función, debes capturar lo que devuelve el return:


saludoCLiente=generaSaludo("Julio","Miele","Muchas gracias")

print(saludoCLiente)

O si quieres directamente imprimirlo:


print(generaSaludo("Julio","Miele","Muchas gracias")
"""

sábado, 6 de marzo de 2021

Iterables_ejercicio 3

"""

    Python marzo 2021

      USA  UN  INTÉRPRETE ON LINE PYTHON 3

    Esto es un comentario multilinea

    Si usas repl.it primero  LOGIN y después CREATE

Los comentarios en python son almohadillas si es de una línea #, y si es de más de una línea el comentario , se ponen """ para empezar y terminar el comentario___dictado el 11 del 2_2026

todo iterable en python empieza contar desde 0_dictado el 11 del 2_2026

 Dict en clas==Ma

"""

# Iterables


iterableCadena = "ESTO ES una cadena DE CARACTERES y NUMEROS 1234"           # Inmutable, dictado 11 del 2 el significado.


iterableTuple = (1, 5, 22, 34, 17, 8, 3)                                     # Inmutable


iterableTupleC = ("Hola", "Soy", "un", "Tuple, y soy inmutable")            # Inmutable


iterableLista = ["apple", "banana", "cherry"]                                # Mutable


iterableDiccionario = {"marca": "HP", "modelo": "Envy 500", "precio": 1200}  # Mutable


totalizador = 0


for c in iterableCadena:


    print(c)


print("me refiero al elemento 3 de modo numérico",iterableCadena[3])


for i in iterableTuple:


    print(i)


    totalizador += i


print("Total ", totalizador, ". Esto es la suma del tuple")


print("Total impreso pero con STR:"+str(totalizador))


for tc in iterableTupleC:


    print(tc)



for l in iterableLista:

    print("Elemento de la lista:", l)



for d in iterableDiccionario:

    print("Nombre en el diccionario", d)

    print("Valor:",iterableDiccionario[d])



"""

Tan bueno como w3schools  

https://learnpython.org/


 apuntes python 3 con ejercicios 

Walt

En w3schools hay html y css también, muy buenos







"""


Microbit

  Proyecto Sensores utilizados Funcionamiento Alarma de Caja Fuerte Acelerómetro Si alguien mueve la caja, la Micro:bit detecta la inclinaci...