-
Notifications
You must be signed in to change notification settings - Fork 0
/
ejercicios_listas.py
325 lines (278 loc) · 10.7 KB
/
ejercicios_listas.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
# Ejercicios de listas en Python.
# Fran Gálvez. 2º ASIR.
import os, sys
from modules import menu, listas, varios
from modules.operaciones import generarAleatorios, ordenarMayorMenor
from random import randint
# Ejercicio 1
def cargarNumeros():
os.system("cls")
print("1. Cargar 10 números entre el 1 y el 1000 (random).")
carga = generarAleatorios(10)
print("\n\t" + listas.imprimirLista(carga))
varios.pausar()
return
# Ejercicio 2
def invertirLista():
os.system("cls")
print("2. Invertir una lista.")
carga = generarAleatorios(10)
print("\n\tLa lista a invertir es: " + listas.imprimirLista(carga))
carga.reverse()
print("\n\tY la lista invertida es: " + listas.imprimirLista(carga))
varios.pausar()
return
# Ejercicio 3
def posicionesPares():
os.system("cls")
print("2. Extraer las posiciones pares de una lista.")
carga = generarAleatorios(10)
print("\n\tLa lista a procesar es: " + listas.imprimirLista(carga))
pares = listas.posicionesPares(carga)
print("\n\tY las posiciones pares de la lista son: " + listas.imprimirLista(pares))
varios.pausar()
return
# Ejercicio 4
def posicionesImpares():
os.system("cls")
print("2. Extraer las posiciones impares de una lista.")
carga = generarAleatorios(10)
print("\n\tLa lista a procesar es: " + listas.imprimirLista(carga))
impares = listas.posicionesImpares(carga)
print("\n\tY las posiciones impares de la lista son: " + listas.imprimirLista(impares))
varios.pausar()
return
# Ejercicio 5
def sumarParesImpares():
os.system("cls")
print("3. Sumar las posiciones pares e impares de una lista, y decir que resultado es mayor.")
carga = generarAleatorios(10)
print("\n\tLa lista a procesar es: " + listas.imprimirLista(carga))
impares = sum(listas.posicionesImpares(carga))
print("\n\tLa suma de las posiciones impares de la lista es " + str(impares) + ".")
pares = sum(listas.posicionesPares(carga))
print("\n\tLa suma de las posiciones pares de la lista es " + str(pares) + ".")
salida = ("mayor", "menor")[impares > pares]
print("\n\tLa suma de los pares es " + salida + " que la de los impares.")
varios.pausar()
return
# Ejercicio 6
def esMayor():
os.system("cls")
print("6. Dada una lista, indicar que elemento es mayor y cual menor.")
carga = generarAleatorios(10)
print("\n\tLa lista a procesar es: " + listas.imprimirLista(carga))
ordenados = ordenarMayorMenor(carga)
print("\n\tEl elemento mayor es " + str(ordenados[0]) + " y el elemento menor es " + str(ordenados[len(ordenados)-1]))
varios.pausar()
return
# Ejercicio 8
def sumarListas():
os.system("cls")
print("8. Crear 3 listas de 10 posiciones, 2 con números al azar y otro donde guardar los resultados de las sumas de las posiciones.")
carga1 = generarAleatorios(10)
carga2 = generarAleatorios(10)
print("\n\tLa primera lista es: " + listas.imprimirLista(carga1))
print("\n\tLa segunda lista es: " + listas.imprimirLista(carga2))
suma = listas.sumarPosicionesDosListas(carga1, carga2)
print("\n\tLa suma de las posiciones de ambas listas es " + listas.imprimirLista(suma))
varios.pausar()
return
# Ejercicio 9
def dividirListaParImpar():
os.system("cls")
print("9. Crear un array y dividirlo en dos nuevos, uno con las posiciones pares y otro con las impares.")
carga = generarAleatorios(10)
print("\n\tLa lista a procesar es: " + listas.imprimirLista(carga))
pares = listas.posicionesPares(carga)
impares = listas.posicionesImpares(carga)
print("\n\tLas posiciones pares son: " + listas.imprimirLista(pares))
print("\n\tLas posiciones impares son: " + listas.imprimirLista(impares))
varios.pausar()
return
# Ejercicios 10 y 11.
def imprimirNombres():
os.system("cls")
print("10. Crear una lista con nombres de personas y otro con el sexo, y sacar el nombre de las mujeres.")
nombres = ["María", "Antonio", "Marta", "Victoria", "Carlos"]
sexos = ["F", "M", "F", "F", "M"]
print("\n\tLa lista de nombres es: " + listas.imprimirLista(nombres))
print("\n\tLa lista de sexos es: " + listas.imprimirLista(sexos))
mujeres = []
i = 0
while i < len(nombres):
if sexos[i] == "F":
mujeres.append(nombres[i])
i += 1
print("\n\tLos nombres de las mujeres son: " + listas.imprimirLista(mujeres))
varios.pausar()
return
# Ejercicio 12. En este ejercicio si se introduce un número no da error, debido a que lo
# convierte a cadena sin dar errores. No he podido elevar una excepción para tal caso.
def analisisCadena():
os.system("cls")
print("12. Introducir una cadena y sacar el número de vocales y cuántas hay de cada una, el número de consonantes, el número de palabras y la cadena entera en mayúsculas")
cadena = str(input("\n\tIntroduce un texto: "))
print("\n\tError: introduce una cadena.")
vocales = []
consonantes = []
#contadores
a = 0
e = 0
i = 0
o = 0
u = 0
nbsp = 0
consonantes = 0
numeros = 0
j = 0
while j < len(cadena):
if cadena[j] == "a":
vocales.append(cadena[j])
a += 1
elif cadena[j] == "e":
vocales.append(cadena[j])
e += 1
elif cadena[j] == "i":
vocales.append(cadena[j])
i += 1
elif cadena[j] == "o":
vocales.append(cadena[j])
o += 1
elif cadena[j] == "u":
vocales.append(cadena[j])
u += 1
elif cadena[j] == " ":
nbsp += 1
elif cadena[j] in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9"):
numeros += 1
else:
consonantes += 1
j += 1
analisis = [
"El análisis de la cadena es: \n",
"\tNúmero de 'a': " + str(a),
"\tNúmero de 'e': " + str(e),
"\tNúmero de 'i': " + str(i),
"\tNúmero de 'o': " + str(o),
"\tNúmero de 'u': " + str(u),
"\tCantidad de números: " + str(numeros),
"\tNúmero de consonantes: " + str(consonantes),
"\tNúmero de palabras: " + str(nbsp),
"\tLa cadena en mayúsculas es: " + str(cadena.upper())
]
menu.imprimirMenu(analisis)
varios.pausar()
return
# Ejericicio 13
def esCapicua():
while True:
try:
os.system("cls")
print("14. Dado un número, decir si es capicúa o no.")
n = int(input("\n\tIntroduce un número: "))
except ValueError:
print("\n\tError: introduce un valor válido.")
else:
i = 1
invertido = []
aux = str(n)
index = len(aux)
while i <= len(aux):
invertido.append(aux[index - i])
i += 1
n1 = listas.convertInt(invertido)
# if n == n[::-1] -> [comienzo::final]
# Comprobar si el número es igual el número invertido
# Utilizando tuplas, si la condición es falsa, se devuelve el primer elemento.
resultado = ("no", "sí")[n == n1]
print("\n\tEl número " + resultado + " es capicúa.")
varios.pausar()
return
# Ejercicio 14
def esPalindromo():
while True:
try:
os.system("cls")
print("14. Dado un núemero, se dice si es capicúa o no.")
cadena = str(input("\n\tIntroduce una cadena: "))
except ValueError:
print("\n\tError: introduce un valor válido.")
else:
i = 1
invertido = []
index = len(cadena)
while i <= len(cadena):
invertido += cadena[index - i]
i += 1
invertido = ''.join(invertido)
resultado = ("no", "sí")[cadena == invertido]
print("\n\tLa cadena " + resultado + " es capicúa.")
varios.pausar()
return
# def separarLetras():
# os.system("cls")
# print("13. Dada una cadena, introducir las consonantes en una lista, las vocales en otra, y unir ambas en una nueva lista que tenga primero las consonantes y luego las vocales.")
def main():
while True:
os.system("cls")
print("Relación de problemas de Python. Listas.")
print("----------------------------------------\n")
menu_items = [
"0. Salir.",
"1. Cargar 10 números entre el 1 y el 1000 (random).",
"2. Sacar dicha lista de forma inversa",
"3. Imprimir las posiciones impares.",
"4. Imprimir las posiciones impares",
"5. Sumar el contenido de las posiciones pares e impares, y decir cuál es mayor",
"6. Indicar los elementos mayor y menor de una lista.",
"8. Crear 3 listas de 10 posiciones, 2 con números al azar y otro donde guardar los resultados de las sumas de las posiciones.",
"9. Crear un array y dividirlo en dos nuevos, uno con las posiciones pares y otro con las impares.",
"10-11. Crear una lista con nombres de personas y otro con el sexo, guardarlos en una lista e imprimirlo por pantalla.",
"12. Introducir una cadena y realizar un análisis de la misma ...",
"13. Introducir una número y comprobar si es capicúa.",
"14. Introducir una cadena y comprobar si es palíndromo."
]
try:
menu.imprimirMenu(menu_items)
opcion = int(input("\nSelecciona una opcion: "))
if opcion not in range (0, 16) or opcion == 7:
print("Error: introduce una opcion entre 0 y 15 (excluyendo el 7).")
varios.pausar()
continue
except ValueError:
print("\nError: introduce un numero.")
varios.pausar()
else:
if opcion == 0:
os.system("cls")
sys.exit()
elif opcion == 1:
cargarNumeros()
elif opcion == 2:
invertirLista()
elif opcion == 3:
posicionesPares()
elif opcion == 4:
posicionesImpares()
elif opcion == 5:
sumarParesImpares()
elif opcion == 6:
esMayor()
elif opcion == 8:
sumarListas()
elif opcion == 9:
dividirListaParImpar()
elif opcion == 10:
imprimirNombres()
elif opcion == 11:
imprimirNombres()
elif opcion == 12:
analisisCadena()
elif opcion == 13:
esCapicua()
elif opcion == 14:
esPalindromo()
#Se comprueba si es script está en ejecución.
if __name__ == "__main__":
main()