sábado, 27 de marzo de 2021

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

   Dictar en clase como Marta.         tec industrial 


"""



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



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



def funcionCualquiera(apellido, edad, nombre):

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



# Keyword Arguments - Parametros nombrados

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


# Ver kwargs en mas detalle (parametros arbitrarios nombrados, entran a funcion como un diccionario)

def mif_funcion_kwargs(**neno):

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


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










miércoles, 24 de marzo de 2021

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

#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

"""




 



sábado, 13 de marzo de 2021

Varias funciones

 

"""
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
Tiene un entradaUsuario=int(input("Ingrese código: ")) porque el imput devuelve cadena,
hay que pasarlo a entero.
Dale a enter después de ingresar el número
W3sc.......♡♡♡♡

Dictar en clase como Martina tec industrial 



"""





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




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

"""

    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

 Dictar en clase como Martina   tec industrial 

   

"""

# Iterables


iterableCadena = "ESTO ES una cadena DE CARACTERES y NUMEROS 1234"           # Inmutable


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

"""


https://learnpython.org/ walter tan bueno como w3schools

 T an bueno como w3schools   https://learnpython.org/  apuntes python 3 con ejercicios  Walter En w3schools hay  html y css también, muy bue...