Skip to content

Commit 2ea5d95

Browse files
authored
Merge pull request mouredev#6584 from maxiRica/main
05 - PYTHON
2 parents 1a11263 + 8c06e7a commit 2ea5d95

File tree

1 file changed

+367
-0
lines changed

1 file changed

+367
-0
lines changed
Lines changed: 367 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,367 @@
1+
"""
2+
Vamos con las cadenas de carácteres
3+
- Acceso a caracteres específicos, subcadenas, longitud, concatenación, repetición, recorrido,
4+
conversión a mayúsculas y minúsculas, reemplazo, división, unión, interpolación, verificación...
5+
"""
6+
7+
import os #importamos la libreria del sistema para poder hacer uso del bash
8+
import textwrap
9+
def limpiar(): #creamos la función para limpiar la pantalla para poder aplicarla las veces que necesitemos sin repetir código
10+
while True:
11+
12+
pregunta=input("quieres que limpie la pantalla? (si - no): ")
13+
if pregunta=="si":
14+
15+
if os.name=="posix":
16+
os.system("clear")
17+
break
18+
else:
19+
os.system("cls")
20+
break
21+
elif pregunta=="no":
22+
break
23+
24+
#Pregunto si limpio la consola
25+
26+
limpiar()
27+
28+
29+
#CREO LA VARIABLE CON LA CADENA DE TEXTO
30+
31+
cadena_texto="Acceso a caracteres específicos, subcadenas, longitud, concatenación,"\
32+
"repetición, recorrido, conversión a mayúsculas y minúsculas, reemplazo, división,"\
33+
"unión, interpolación, verificación...\n"
34+
35+
print(cadena_texto)
36+
37+
# 1. Longitud de la Cadena
38+
39+
print("#1. LONGITUD DE LA CADENA")
40+
print(len(cadena_texto))
41+
print("\n")
42+
43+
# 2. Acceso a caracteres específicos
44+
45+
print("#2. ACCESO A UN CARÁCTER\n")
46+
print("Vamos acceder a un punto concreto del indice de la cadena. Vamos a pedir que posición quiere el usuario\n")
47+
while True:
48+
try:
49+
pregunta=int(input("dame el número del indice en la cadena anterior para mostrar el carácter: "))
50+
if pregunta<0 or pregunta>= len(cadena_texto):
51+
raise IndexError
52+
break
53+
except ValueError:
54+
print("\n")
55+
print("ERROR. Ingresa un valor entero")
56+
except IndexError:
57+
print("ERROR. Has puesto un valor fuera del rango de la cadena")
58+
59+
print(f"el carácter es el: {cadena_texto[pregunta]}\n")
60+
61+
# 3. Acceso a subcadenas (slicing)
62+
63+
print("#3. ACCESO A SUBCADENAS (SLICING)\n")
64+
while True:
65+
try:
66+
inicio=int(input("ingresa el número de inicio del indice la cadena: \n"))
67+
final=int(input("ingresa el final del indice de la cadena: \n"))
68+
if inicio>final:
69+
print("el primer valor a de ser inferior al segundo\n")
70+
continue
71+
break
72+
except ValueError:
73+
print("\n")
74+
print("ERROR. Ingresa un valor entero")
75+
76+
77+
print(f"la cadena resultante es: {cadena_texto[inicio:final]}\n")
78+
79+
# 4. Concatenación
80+
81+
print("#4. CONCATENACIÓN")
82+
83+
while True:
84+
try:
85+
print("Vamos a concatenar dos candenas\n")
86+
print("antes decide que tipo de concatenació:\n")
87+
print("1- enganchar dos palabras como una compuesta\n")
88+
print("2- concatenar dos palabras individuales con espacio entre ellas\n")
89+
opcion=int(input("Que opción quieres: \n"))
90+
except ValueError:
91+
print("\n")
92+
print("ERROR. Ingresa un valor entero")
93+
if opcion==1:
94+
print("has escogido la opción 1\n")
95+
primera_cadena=input("escribe la primera cadena :")
96+
segunda_cadena=input("escribe la segunda cadena: ")
97+
print("la concatenación es: ")
98+
print(primera_cadena + segunda_cadena)
99+
break
100+
elif opcion==2:
101+
print("has escogido la opción 2")
102+
primera_cadena=input("escribe la primera cadena :")
103+
segunda_cadena=input("escribe la segunda cadena: ")
104+
print("la concatenación es: ")
105+
print(primera_cadena + " " + segunda_cadena)
106+
break
107+
elif opcion<0 and opcion>1:
108+
print("ERROR. Introduce 1 o 2\n")
109+
110+
# 5. Repetición de Cadenas. Se trata de repetir la cadena las veces que le indiques
111+
112+
print("\n#5. REPETICIÓN DE CADENAS\n")
113+
print("Vamos a realizar una repetición de la misma cadena, tantas veces le indiques\n")
114+
while True:
115+
frase=input("dime la cadena a repetir: \n")
116+
try:
117+
repeticion=int(input("indica las veces que se ha de repetir la cadena: "))
118+
cadena=frase*repeticion
119+
print(cadena+"\n")
120+
break
121+
except ValueError:
122+
print("ERROR. Ingresa un valor entero")
123+
124+
# 6. Conversión a Mayúsculas y Minúsculas
125+
126+
print("\n#6. CONVERSIÓN A MAYÚSCULAS Y MINÚSCULAS\n")
127+
print("Empezamos con la conversión de minúsculas a mayúsculas\n")
128+
frase=input("dime la frase: ")
129+
frase2=frase.upper()
130+
print("\n"+frase2+"\n")
131+
132+
print("Empezamos con la conversión de mayúsculsa a minúsculas\n")
133+
frase=input("dime la frase: ")
134+
frase2=frase.lower()
135+
print("\n"+frase2)
136+
137+
# 7. Recorrido por la cadena
138+
print("\n#7. RECORRIDO POR LA CADENA\n")
139+
print(f"cogeremos la frase inicial: {cadena_texto}\n")
140+
print("vamos a imprimir carácter a carácter separado cada uno del otro, haciendo una iteración por toda la cadena\n")
141+
print("para eso, luego vamos a usar la función print(cadena, end=\" \"). Con el parámetro end añadimos despues del string un carácter o espacio")
142+
for i in cadena_texto:
143+
print(i,end=" ")
144+
print("\n")
145+
146+
# 8. Reemplazo de Subcadenas
147+
print("#8. REEMPLAZO DE SUBCADENAS\n")
148+
cadena=input("que cadena es la muestra donde vamos a realizar el cambio: ")
149+
antigua=input("\nindicame la cadena que quieres substituir: ")
150+
nueva=input("\nindicame la cadena nueva: ")
151+
cadena=cadena.replace(antigua,nueva)
152+
print(f"\nLa cadena ha quedado así: {cadena}\n")
153+
154+
# 9. División de Cadenas
155+
print("\n#9. División de Cadenas\n")
156+
print("Vamos a proceder a realizar una división de una cadena. Lo realizaremos con la función .split()")
157+
cadena=input("pasame la cadena para después dividirla: ")
158+
lista_cadenas=cadena.split()
159+
print("\nHemos creado una lista con las cadenas divididas por un espacio (frases).\
160+
Si quieres separar por un indicador se ha de proceder indicandolo\n")
161+
print(f"la lista es: {lista_cadenas}")
162+
print("\nAhora vamos a indicar también cual será el separador\n")
163+
separador=input("dame el separador: ")
164+
lista_cadenas2=cadena.split(separador)
165+
print(f"La lista es: {lista_cadenas2}")
166+
167+
# 10. Unión de cadenas
168+
print("# 10. UNIÓN DE CADENAS\n")
169+
print("Esta función (.join()) hace la función inversa a la .splint()\n")
170+
print(f"Vamos a usar la lista anterior que hemos creado: {lista_cadenas}\n")
171+
cadena_nueva=" ".join(lista_cadenas)
172+
print(cadena_nueva)
173+
174+
# 11. Interpolación de cadenas
175+
print("\n# 11. INTERPOLACIÓN DE CADENAS\n")
176+
print("Tenemos diferentes sistemas de interpolación, el más habitual es el F-strings:\n")
177+
print("1. F-strings: print(f\"cadena {variable})\n")
178+
print("2. Str.format()\n")
179+
print("inciamos con la F-str")
180+
frase1=input("dame la primera frase: \n")
181+
frase2=input("dame la segunda frase: \n")
182+
print(f"vamos a añadir al print la primera frase: ({frase1}) y la segunda frase: ({frase2})\n") #usamos la F-Str para introducir cadenas
183+
print("vamos a usar el .format(). Requiere que introduzca los datos según lo siguiente:\n")
184+
print("variable=\"estoy en {cadena1\} y quiero ir a {cadena2\}.format(cadena1=\"STR\",cadena2=\"STR\")\n")
185+
print("luego imprimimos con un print la variable")
186+
cadena1=input("dame la primera cadena que ha de ser el nombre de una ciudad: \n")
187+
cadena2=input("dame la segunda cadena que ha de ser el nombre de otra ciudad: \n")
188+
mensaje="estoy en {frase1} y quiero ir a {frase2}".format(frase1=cadena1,frase2=cadena2) # usamos la función .format
189+
print(mensaje+"\n")
190+
191+
# 12. VERIFICACIÓN DE PROPIEDADES DE CADENAS
192+
print("# 12. VERIFICACIÓN DE PROPIEDADES DE CADENAS\n")
193+
print("Tipos de verificación: \n")
194+
195+
#Verifico si la cadena es de caracter alfabéticos
196+
print("1. Verifica si los carácteres son letras con la función .isalpha()\n")
197+
cadena=input("introduce una palabra (no una frase o dará error) para verificar si son letras: ")
198+
verifica=cadena.isalpha() #compruebo si los carácteres son alfabeto, y si es cierto devuelvo True
199+
if verifica==True:
200+
print("son carácteres alfabéticos\n")
201+
else:
202+
print("no es una cadena de carácteres alfabéticos\n")
203+
204+
#si es una frase genero una lista separando las palabras con un .split() y luego lo proceso
205+
print("puedo comprobar si se usa una frase, palabra a palabra. Para eso usaré un bucle y la función all()\n")
206+
cadena=input("introduce una frase para verificar si son letras: ")
207+
frase=cadena.split()
208+
alphabet=all(caracter.isalpha() for caracter in frase)
209+
if alphabet:
210+
print("son caracteres alfabéticos\n")
211+
else:
212+
print("no todos son carácteres alfabéticos\n")
213+
214+
#Verifico si la cadena es alfanumérica
215+
print("2. Verifica si los carácteres son alfanuméricos con la función .isalnum()\n")
216+
frase=input("introduce la cadena: \n")
217+
verifica=frase.isalnum() #realizo la compovación de si los carácteres son alfanumérico
218+
if verifica:
219+
print("son alfanuméricos\n")
220+
else:
221+
print("no son alfanuméricos\n")
222+
223+
#vuelvo a separar en una lista mediante un .split()
224+
frase=input("escribe la frase alfanumérica a identificar: \n")
225+
lista=frase.split()
226+
numeros=all(num.isalnum() for num in lista)
227+
if numeros:
228+
print("todos son alfanúmericos\n")
229+
else:
230+
print("no todos son alfanúmericos")
231+
232+
#Verifico si la cadena es numérica
233+
print("3. Verifica si los carácteres son numéricos con la función .isdigit()\n")
234+
frase=input("introduce la cadena: \n")
235+
verifica=frase.isdigit() #realizo la compovación de si los carácteres son numéricos
236+
if verifica:
237+
print("son numéricos\n")
238+
else:
239+
print("no son numéricos\n")
240+
241+
#vuelvo a separar en una lista mediante un .split()
242+
frase=input("introduce la cadena separada por espacios\n")
243+
lista=frase.split()
244+
numeros=all(num.isdigit() for num in lista)
245+
if numeros:
246+
print("todos son números\n")
247+
else:
248+
print("no todos son números")
249+
250+
#Verifico si la cadena es un espacio en blanco
251+
print("4. Verifica si la cadena es un espacio en blanco con la función .isspace()\n")
252+
frase=input("introduce la cadena: \n")
253+
verifica=frase.isspace() #realizo la compovación de si es un espacio en blanco
254+
if verifica:
255+
print("es un espacio en blanco\n")
256+
else:
257+
print("no es un espacio en blanco\n")
258+
259+
# EJERCICIOS DIFICULTAD EXTRA
260+
261+
#Palíndromos
262+
limpiar() #Iniciamos limpiando la pantalla si el usuario nos lo indica
263+
print("#######################")
264+
print("# #")
265+
print("# PALÍNDROMOS #")
266+
print("# #")
267+
print("#######################")
268+
texto=(
269+
"Un palíndromo es una palabra, frase, número o cualquier otra secuencia de caracteres"
270+
"que se lee igual de izquierda a derecha que de derecha a izquierda, ignorando los espacios,"
271+
"la puntuación y la acentuación. Es decir, su orden se mantiene al revés, lo cual hace que se"
272+
"pueda leer de forma idéntica en ambas direcciones."
273+
)
274+
paragrafo=textwrap.fill(texto,80)
275+
print("\n"+paragrafo+"\n")
276+
frase=input("introduce el palíndromo: ")
277+
frase=frase.replace(" ","").lower() #ponemos todos los carácteres en minúsculas y quitamos posibles espacios
278+
palindromo=frase
279+
frase=list(frase)
280+
palindromo=list(palindromo)
281+
palindromo.reverse()
282+
palCert=True
283+
for i in range(len(frase)):
284+
if frase[i] != palindromo[i]:
285+
palCert=False
286+
break
287+
if palCert:
288+
print("\nES UN PALÍNDROMO\n")
289+
else:
290+
print("\nNO ES UN PALÍNDROMO\n")
291+
292+
# ANAGRAMA
293+
294+
limpiar()
295+
296+
print("#################")
297+
print("# #")
298+
print("# ANAGRAMA #")
299+
print("# #")
300+
print("#################")
301+
302+
texto=(
303+
"Un anagrama es una palabra o frase formada al reorganizar"
304+
"las letras de otra palabra o frase, usando todas las letras"
305+
"una sola vez. Por ejemplo, \"amor\" es un anagrama de \"Roma\""
306+
)
307+
paragrafo=textwrap.fill(texto,80)
308+
print("\n"+paragrafo+"\n")
309+
print("\nVamos a introducir dos frases y comprobar si la segunda es un anagrama de la segunda\n")
310+
print(textwrap.fill("No se verificará si la frase tiene coherencia o sentido lingüístico, únicamente se evaluará si las letras se reorganizan correctamente en un anagrama",80))
311+
312+
# iniciamos la petición de las frases
313+
while True:
314+
primera_frase=input("\nintroduce la primera frase: ")
315+
anagrama=input("\nintroduce la segunda frase. El anagrama: ")
316+
317+
primera_frase=primera_frase.replace(" ","").lower() #ponemos en minúsculas los carácteres y quitamos los espacios
318+
anagrama=anagrama.replace(" ","").lower() #ponemos en minúsculas los carácteres y quitamos los espacios
319+
320+
# comprobamos que la longitud de las dos cadenas sean iguales
321+
if len(primera_frase)==len(anagrama):
322+
break
323+
else:
324+
print("\nERROR. Introduce frases del mismo tamaño\n")
325+
326+
#ordenamos las cadenas convirtiendolas en listas ordenadas
327+
primera_frase=sorted(primera_frase)
328+
anagrama=sorted(anagrama)
329+
330+
if primera_frase==anagrama:
331+
print("\nEs un anagrama\n")
332+
else:
333+
print("\nNo es un anagrama\n")
334+
335+
# ISOGRAMA
336+
337+
# ANAGRAMA
338+
339+
limpiar()
340+
341+
print("#################")
342+
print("# #")
343+
print("# ISOGRAMA #")
344+
print("# #")
345+
print("#################")
346+
347+
texto=(
348+
"Un isograma es una palabra o frase en la que ninguna letra se repite."
349+
"Cada letra aparece solo una vez, sin importar si son mayúsculas o minúsculas."
350+
"Un ejemplo de isograma es la palabra \"murciélago\", ya que todas sus letras son diferentes."
351+
)
352+
353+
print(textwrap.fill(texto,80))
354+
355+
# Iniciamos con la introducción de la frase
356+
frase=input("introduce la frase a analizar: \n")
357+
frase=frase.replace(" ","").lower() # quito espacios y lo paso todo a minúsculas para evitar errores en la comparación
358+
isograma=set()
359+
lista=list(frase)
360+
361+
# Iniciamos unta iteración por la lista creada de la frase introducida y añadimos los carácteres en el set()
362+
for car in lista:
363+
isograma.add(car)
364+
if len(lista)==len(isograma):
365+
print("\nEs un ISOGRAMA\n")
366+
else:
367+
print("\nNo es un ISOGRAMA\n")

0 commit comments

Comments
 (0)