Skip to content

Commit 1bf4f66

Browse files
authored
Merge pull request mouredev#7396 from santiagobailleres/ej00
#2 - Python
2 parents a0b9e9d + f5f74c0 commit 1bf4f66

File tree

2 files changed

+310
-0
lines changed

2 files changed

+310
-0
lines changed
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
#02 FUNCIONES Y ALCANCE
2+
3+
'''
4+
/*
5+
* EJERCICIO:
6+
* - Crea ejemplos de funciones básicas que representen las diferentes
7+
* posibilidades del lenguaje:
8+
* Sin parámetros ni retorno, con uno o varios parámetros, con retorno...
9+
* - Comprueba si puedes crear funciones dentro de funciones.
10+
* - Utiliza algún ejemplo de funciones ya creadas en el lenguaje.
11+
* - Pon a prueba el concepto de variable LOCAL y GLOBAL.
12+
* - Debes hacer print por consola del resultado de todos los ejemplos.
13+
* (y tener en cuenta que cada lenguaje puede poseer más o menos posibilidades)
14+
*
15+
* DIFICULTAD EXTRA (opcional):
16+
* Crea una función que reciba dos parámetros de tipo cadena de texto y retorne un número.
17+
* - La función imprime todos los números del 1 al 100. Teniendo en cuenta que:
18+
* - Si el número es múltiplo de 3, muestra la cadena de texto del primer parámetro.
19+
* - Si el número es múltiplo de 5, muestra la cadena de texto del segundo parámetro.
20+
* - Si el número es múltiplo de 3 y de 5, muestra las dos cadenas de texto concatenadas.
21+
* - La función retorna el número de veces que se ha impreso el número en lugar de los textos.
22+
*
23+
* Presta especial atención a la sintaxis que debes utilizar en cada uno de los casos.
24+
* Cada lenguaje sigue una convenciones que debes de respetar para que el código se entienda.
25+
*/
26+
'''
27+
28+
# 1- Crea ejemplos de funciones básicas que representen las diferentes posibilidades del lenguaje:
29+
# Sin parámetros ni retorno, con uno o varios parámetros, con retorno.
30+
31+
# Función sin parámetros ni retorno
32+
def funcion1():
33+
print("Función sin parámetros ni retorno")
34+
35+
funcion1()
36+
37+
# Función sin parámetros y con retorno
38+
def funcion2():
39+
return "Función sin parámetros y con retorno"
40+
41+
print(funcion2())
42+
43+
# Función con un parámetro predeterminado y sin retorno
44+
def funcion3(parametro = "Hola"):
45+
print("Función con un parámetro predeterminado y sin retorno:", parametro)
46+
47+
funcion3()
48+
49+
# Función con un parámetro y sin retorno
50+
def funcion4(parametro):
51+
print("Función con un parámetro y sin retorno:", parametro)
52+
53+
funcion4("Hola")
54+
55+
# Funcion con varios parámetros y con retorno
56+
def funcion5(parametro1, parametro2):
57+
return parametro1 + parametro2
58+
59+
a = funcion5(2, 3)
60+
print(a)
61+
62+
# Función con retorno de varios valores
63+
def funcion6(parametro1, parametro2):
64+
return parametro1, parametro2
65+
66+
a, b = funcion6(2, 3)
67+
print(a)
68+
print(b)
69+
70+
# Función con numero variable de argumentos
71+
def funcion7(*args):
72+
for arg in args:
73+
print(arg)
74+
75+
funcion7(1, 2, 3, 4, 5)
76+
77+
# Función con numero variable de argumentos y argumentos con nombre
78+
def funcion11(**kwargs): # kwargs = keyword arguments
79+
for key, value in kwargs.items():
80+
print(key, value)
81+
82+
funcion11(a = 1, b = 2, c = 3)
83+
84+
# 2- Comprueba si puedes crear funciones dentro de funciones.
85+
def funcion8():
86+
def funcion9():
87+
print("Función dentro de función")
88+
funcion9()
89+
90+
funcion8()
91+
92+
# 3- Utiliza algún ejemplo de funciones ya creadas en el lenguaje.
93+
def funcion10():
94+
print("Función que utiliza una función ya creada en el lenguaje")
95+
print("Ejemplo de función que ya existe en Python: len([1, 2, 3]) =", len([1, 2, 3]))
96+
97+
funcion10()
98+
99+
# 4- Pon a prueba el concepto de variable LOCAL y GLOBAL.
100+
variable_global = 5
101+
102+
def funcion12():
103+
variable_local = 3
104+
print("Variable local:", variable_local)
105+
print("Variable global:", variable_global)
106+
107+
print("Variable global:", variable_global)
108+
# print("Variable local:", variable_local) # Error: variable_local no está definida
109+
110+
funcion12()
111+
112+
# EXTRA - Crea una función que reciba dos parámetros de tipo cadena de texto y retorne un número.
113+
# La función imprime todos los números del 1 al 100. Teniendo en cuenta que:
114+
# - Si el número es múltiplo de 3, muestra la cadena de texto del primer parámetro.
115+
# - Si el número es múltiplo de 5, muestra la cadena de texto del segundo parámetro.
116+
# - Si el número es múltiplo de 3 y de 5, muestra las dos cadenas de texto concatenadas.
117+
# - La función retorna el número de veces que se ha impreso el número en lugar de los textos.
118+
119+
def funcionExtra(text1, text2):
120+
cont = 0
121+
for i in range(1,101):
122+
if i % 3 == 0 and i % 5 == 0:
123+
print(text1 + text2)
124+
elif i % 3 == 0:
125+
print(text1)
126+
elif i % 5 == 0:
127+
print(text2)
128+
else:
129+
print(i)
130+
cont += 1
131+
return cont
132+
133+
print("Número de veces que se ha impreso el número:", funcionExtra("multi3", "multi5"))
Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
''' * EJERCICIO:
2+
* - Muestra ejemplos de creación de todas las estructuras soportadas por defecto en tu lenguaje.
3+
* - Utiliza operaciones de inserción, borrado, actualización y ordenación.
4+
*
5+
* DIFICULTAD EXTRA (opcional):
6+
* Crea una agenda de contactos por terminal.
7+
* - Debes implementar funcionalidades de búsqueda, inserción, actualización y eliminación de contactos.
8+
* - Cada contacto debe tener un nombre y un número de teléfono.
9+
* - El programa solicita en primer lugar cuál es la operación que se quiere realizar, y a continuación
10+
* los datos necesarios para llevarla a cabo.
11+
* - El programa no puede dejar introducir números de teléfono no númericos y con más de 11 dígitos.
12+
* (o el número de dígitos que quieras)
13+
* - También se debe proponer una operación de finalización del programa.'''
14+
15+
# Creación de estructuras de datos
16+
# Listas
17+
list=[1,2,3,4,5]
18+
print("Lista:",list)
19+
# Inserción
20+
list.append(6)
21+
print("Lista con inserción:",list)
22+
# Borrado
23+
list.remove(6)
24+
print("Lista con borrado:",list)
25+
# Actualización
26+
list[1]=0
27+
print("Lista con actualización:",list)
28+
# Ordenación
29+
list.sort()
30+
print("Lista ordenada:",list)
31+
# Inversión
32+
list.reverse()
33+
print("Lista invertida:",list)
34+
# acceso
35+
print("Elemento en la posición 2:",list[2])
36+
print('Tipo :' , type(list))
37+
38+
# Tuplas
39+
tuple_=(1,2,3,5,4)
40+
print("Tupla:",tuple_)
41+
# No se pueden modificar, borrar o actualizar
42+
# Ordenación
43+
tuple2=sorted(tuple_) # devuelve una lista ordenada
44+
tuple=tuple(sorted(tuple_)) # convierte la lista ordenada en tupla
45+
print("Tupla ordenada:",tuple)
46+
# acceso
47+
print("Elemento en la posición 2:",tuple[2])
48+
print('Tipo :' , type(tuple))
49+
50+
# Diccionarios
51+
dict_={"Nombre":"Santiago","Apellido":"Bailleres"}
52+
print("Diccionario:",dict_)
53+
# Inserción
54+
dict_["Edad"]=25
55+
print("Diccionario con inserción:",dict_)
56+
# Borrado
57+
del dict_["Edad"]
58+
print("Diccionario con borrado:",dict_)
59+
# Actualización
60+
dict_["Nombre"]="Santiago Bailleres"
61+
print("Diccionario con actualización:",dict_)
62+
# Ordenación
63+
dict2=sorted(dict_) # devuelve una lista ordenada
64+
dict3=dict(sorted(dict_.items())) # es necesario poner .items()?
65+
# si no se pone .items() da error porque no se puede ordenar un diccionario
66+
# convierte la lista ordenada en diccionario
67+
print("Diccionario ordenado:",dict3)
68+
# acceso
69+
print("Valor de la clave 'Nombre':",dict_["Nombre"])
70+
print('Tipo :' , type(dict_))
71+
dicc= {1: 2, 2: 4, 3: 1}
72+
dicc=dict(sorted(dicc.items())) #se puede ordenar un diccionario por clave o por valor
73+
print('Diccionario ordenado por clave:',dicc)
74+
# si se ordena por valor se debe hacer asi:
75+
dicc=dict(sorted(dicc.items(), key=lambda x: x[1])) # x[1] es el valor de cada par clave-valor
76+
print('diccionario ordenado por valor:',dicc)
77+
# si se quieren reestablecer las claves se puede hacer asi:
78+
dicc=dict(enumerate(dicc.values(),1)) # se enumeran los valores empezando en 1
79+
print('diccionario con claves reestablecidas:',dicc)
80+
81+
# Conjuntos
82+
set={1,2,3,4,5} # un conjunto no puede tener elementos duplicados y no tiene orden
83+
# es util para eliminar duplicados de una lista o tupla y para realizar operaciones de conjuntos
84+
# como union, interseccion, diferencia, etc.
85+
print("Conjunto:",set)
86+
# Inserción
87+
set.add(6)
88+
print("Conjunto con inserción:",set)
89+
# Borrado
90+
set.remove(6)
91+
print("Conjunto con borrado:",set)
92+
# Actualización
93+
set.add(0)
94+
print("Conjunto con actualización:",set)
95+
# Ordenación
96+
# no se puede ordenar un conjunto
97+
# acceso
98+
# no se puede acceder a un elemento por su posición
99+
print('Tipo :' , type(set))
100+
# Operaciones de conjuntos
101+
set2={4,5,6,7,8}
102+
print("Conjunto 2:",set2)
103+
print("Union:",set.union(set2))
104+
print("Intersección:",set.intersection(set2))
105+
print("Diferencia:",set.difference(set2))
106+
print("Diferencia simétrica:",set.symmetric_difference(set2))
107+
print("Subconjunto:",set.issubset(set2)) # para que sea subconjunto todos los elementos de set deben estar en set2
108+
print("Superconjunto:",set.issuperset(set2)) # para que sea superconjunto todos los elementos de set2 deben estar en set
109+
print("Disjuntos:",set.isdisjoint(set2)) # si no tienen elementos en común
110+
111+
# EXTRA
112+
'''Crea una agenda de contactos por terminal.
113+
* - Debes implementar funcionalidades de búsqueda, inserción, actualización y eliminación de contactos.
114+
* - Cada contacto debe tener un nombre y un número de teléfono.
115+
* - El programa solicita en primer lugar cuál es la operación que se quiere realizar, y a continuación
116+
* los datos necesarios para llevarla a cabo.
117+
* - El programa no puede dejar introducir números de teléfono no númericos y con más de 11 dígitos.
118+
* (o el número de dígitos que quieras)
119+
* - También se debe proponer una operación de finalización del programa.'''
120+
# Agenda de contactos
121+
def mi_agenda():
122+
agenda={}
123+
while True:
124+
print('')
125+
print('1. Buscar contacto')
126+
print('2. Insertar contacto')
127+
print('3. Actualizar contacto')
128+
print('4. Eliminar contacto')
129+
print('5. Mostrar agenda')
130+
print('6. Salir')
131+
option=input('\nSeleccione una opción: ')
132+
if option=='1':
133+
name=input('Ingrese el nombre del contacto que desea buscar: ')
134+
if name in agenda:
135+
print(f'Nombre: {name}, Teléfono: {agenda[name]}')
136+
else:
137+
print('Contacto no encontrado')
138+
elif option=='2':
139+
name= input('Ingrese el nombre del contacto que desea insertar: ')
140+
phone=input('Ingrese el teléfono del contacto: ')
141+
if phone.isdigit() and len(phone)<=11 and len(phone)>0:
142+
agenda[name]=phone
143+
print('Contacto insertado')
144+
else:
145+
print('El número de teléfono debe ser numérico y tener máximo 11 dígitos')
146+
elif option=='3':
147+
name=input('Ingrese el nombre del contacto que desea actualizar: ')
148+
if name in agenda:
149+
phone=input('Ingrese el nuevo teléfono del contacto: ')
150+
if phone.isdigit() and len(phone)<=11 and len(phone)>0:
151+
agenda[name]=phone
152+
print('Contacto actualizado')
153+
else:
154+
print('El número de teléfono debe ser numérico y tener máximo 11 dígitos')
155+
else:
156+
print('Contacto no encontrado')
157+
elif option=='4':
158+
name = input('Ingrese el nombre del contacto que desea eliminar: ')
159+
if name in agenda:
160+
del agenda[name]
161+
print('Contacto eliminado')
162+
else:
163+
print('Contacto no encontrado')
164+
elif option=='5':
165+
print('Agenda de contactos:')
166+
for name,phone in agenda.items():
167+
print(f'Nombre: {name}, Teléfono: {phone}')
168+
elif option=='6':
169+
print('Saliendo de la agenda...')
170+
break
171+
else:
172+
print('Opción no válida, ingrese un número del 1 al 6')
173+
mi_agenda()
174+
175+
176+
177+

0 commit comments

Comments
 (0)