Skip to content

Commit 2c1db6a

Browse files
authored
Merge pull request #6449 from Dkp-Dev/main
#4 - Python
2 parents 3e8687b + b68a9ed commit 2c1db6a

File tree

2 files changed

+215
-0
lines changed

2 files changed

+215
-0
lines changed
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
"""
2+
EJERCICIO:
3+
* Muestra ejemplos de todas las operaciones que puedes realizar con cadenas de caracteres
4+
* en tu lenguaje. Algunas de esas operaciones podrían ser (busca todas las que puedas):
5+
* - Acceso a caracteres específicos, subcadenas, longitud, concatenación, repetición,
6+
* recorrido, conversión a mayúsculas y minúsculas, reemplazo, división, unión,
7+
* interpolación, verificación...
8+
"""
9+
10+
# Operaciones
11+
12+
x1 = "Perro"
13+
x2 = "Conejo"
14+
x3 = "tortuga nadando"
15+
16+
print(x1 + x2) # Concatenacion (pegar dos o mas cadenas de texto)
17+
18+
print(x1 * 3) # Repeticion
19+
20+
print(x1[4] + x1[3] + x1[2] + x1[1] + x1[0]) # Indexacion (indicar un solo caracter de la cadena)
21+
22+
print(len(x2)) # Longitud
23+
24+
print(x2[2:6]) # Slicing (porcionar la cadena de texto)
25+
print(x2[2:])
26+
print(x2[:4])
27+
28+
print("e" in x1) # Busqueda (comprobar si el/los caracteres se encuentran en una cadena de texto)
29+
print("jo" in x2)
30+
31+
print(x2.replace("o","a")) # Remplazo
32+
33+
print(x2.split("e")) # Division de una cadena que da como resultado una lista
34+
35+
print(x3.upper()) # Convertir a Mayusculas
36+
37+
print(x1.lower()) # Convertir a minusculas
38+
39+
print(x3.title()) # Primera letra a mayuscula de cada palabra
40+
41+
print(x3.capitalize()) # Primera letra a mayuscula de toda la cadena de texto
42+
43+
print(" Dkp Dev ")
44+
print(" Dkp Dev ".strip()) # Elimincacion de espacios al comienzo y al final de la cadena
45+
46+
print(x3.startswith("Tor")) # Comprueba si la cadena inicia con los caracteres que se especifiquen
47+
print(x3.startswith("tor"))
48+
49+
print(x3.find("ando")) # Busqueda por posicion del caracter
50+
51+
print(x3.count("a")) # Busqueda de ocurrencias (cuantas veces aparece el caracter)
52+
53+
print("{}, {} y {}".format(x1,x2,x3)) # Formateo de una cadena eligiendo donde insertare mis cadenas de texto
54+
55+
print(f"{x2}, {x1} y {x3}") # Interpolacion
56+
57+
print(list(x1)) # Transforma una cadena en lista
58+
59+
l1 = [x1, x2, "y", x3]
60+
print(" ".join(l1)) # Transforma una lista a cadena de texto
61+
62+
x4 = "357" # Transformar una cadena numerica en un 'int'
63+
x4 = int(x4)
64+
print(x4)
65+
66+
x5 = "35.7" # Transformar una cadena numerica en un 'float'
67+
x5 = float(x5)
68+
print(x5)
69+
70+
x1 = "Perro" # Comprobaciones
71+
x6 = "123123"
72+
print(x1.isalpha()) # Si la cadena es alfabetica (solo contiene letras)
73+
print(x6.isalpha())
74+
75+
print(x1.isnumeric()) # Si la cadena es numerica (solo contiene numeros)
76+
print(x6.isnumeric())
77+
78+
print(x1.isalnum()) # Si la cadena es alfanumerica (contiene letras y/o numeros)
79+
print(x6.isalnum())
80+
81+
"""
82+
DIFICULTAD EXTRA (opcional):
83+
* Crea un programa que analice dos palabras diferentes y realice comprobaciones
84+
* para descubrir si son:
85+
* - Palíndromos (palabras que se leen igual aunque se posiciones en orden inverso como radar o salas)
86+
* - Anagramas (palabras que contiene las mismas letras pero en diferente orden)
87+
* - Isogramas (palabras que no tienen mas de una letra repetida)
88+
89+
"""
90+
91+
def check(cadena1: str,cadena2: str):
92+
93+
# Palindromo
94+
print(f"Es {cadena1} un palindromo?: {cadena1 == cadena1[::-1]}") # Mediante el slicing comprobamos si la cadena se lee igual en reversa
95+
print(f"Es {cadena2} un palindromo?: {cadena2 == cadena2[::-1]}")
96+
97+
# Anagramas
98+
print(f"Es {cadena1} un anagrama de {cadena2}?: {sorted(cadena1) == sorted(cadena2)}") # Se ordenan las cadenas y se comprueban los characteres
99+
100+
# Isograma
101+
102+
def isograma(cadena:str) -> bool: # Funcion que recibe una cadena y arroja un booleano
103+
104+
cadena_dict = dict() # Primero un dict de la cadena
105+
for letras in cadena:
106+
cadena_dict[letras] = cadena_dict.get(letras, 0) + 1
107+
108+
isograma = True
109+
valor = list(cadena_dict.values()) # Lista de values
110+
isograma_len = valor[0]
111+
for cadena_count in valor: # Se cuentan los values
112+
if cadena_count != isograma_len: # Se comprueban ambas listas
113+
isograma = False
114+
break
115+
116+
return isograma
117+
118+
print(f"Es {cadena1} un isograma? {isograma(cadena1)}")
119+
print(f"Es {cadena2} un isograma? {isograma(cadena2)}")
120+
121+
122+
123+
124+
check("radar","quesoqueso")
125+
check("amor","roma")
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
"""
2+
* EJERCICIO:
3+
* - Muestra ejemplos de asignación de variables "por valor" y "por referencia", según
4+
* su tipo de dato.
5+
* - Muestra ejemplos de funciones con variables que se les pasan "por valor" y
6+
* "por referencia", y cómo se comportan en cada caso en el momento de ser modificadas.
7+
* (Entender estos conceptos es algo esencial en la gran mayoría de lenguajes)
8+
"""
9+
10+
# Tipos de dato por valor
11+
# Los valores de las variables estan indicados y aunque otra variable copie su valor creara su propia direccion
12+
13+
a = 10
14+
b = a
15+
b = 20
16+
17+
print(a) # Imprime 10
18+
print(b) # Imprime 20 a pesar de que en un punto se le indico que copiara el valor de a
19+
20+
# Tipo de dato por referencia
21+
22+
list_a = [10,20]
23+
list_b = list_a
24+
list_b.append(30)
25+
26+
print(list_a) # Ambas impresiones tienen el mismo valor [10,20,30]
27+
print(list_b)
28+
29+
# Los tipos de dato por referencia no "adquieren" valores sino "heredan" o "apuntan" direcciones, por esto mismo al cambiar el valor b cambia el de a
30+
31+
32+
# Funciones con datos por referencia
33+
34+
def list_func(my_list: list):
35+
my_list.append(30)
36+
37+
list_z = my_list
38+
list_z.append(40)
39+
40+
print(my_list)
41+
print(list_z)
42+
43+
44+
list_x = [10,20]
45+
list_func(list_x)
46+
print(list_x)
47+
48+
49+
"""
50+
DIFICULTAD EXTRA (opcional):
51+
* Crea dos programas que reciban dos parámetros (cada uno) definidos como
52+
* variables anteriormente.
53+
* - Cada programa recibe, en un caso, dos parámetros por valor, y en otro caso, por referencia.
54+
* Estos parámetros los intercambia entre ellos en su interior, los retorna, y su retorno
55+
* se asigna a dos variables diferentes a las originales. A continuación, imprime
56+
* el valor de las variables originales y las nuevas, comprobando que se ha invertido
57+
* su valor en las segundas.
58+
* Comprueba también que se ha conservado el valor original en las primeras.
59+
"""
60+
61+
# Por Valor
62+
63+
def box(var1: int, var2: int) -> tuple:
64+
var_t = var1
65+
var1 = var2
66+
var2 = var_t
67+
return var1, var2
68+
69+
var_x = 10
70+
var_z = 20
71+
var_r, var_s = box(var_x,var_z)
72+
73+
print(f"X es {var_x} y Z es {var_z}")
74+
print(f"R es {var_r} y S es {var_s}")
75+
76+
# Por referencia
77+
78+
def chest(var1: list, var2: list) -> tuple:
79+
var_t = var1
80+
var1 = var2
81+
var2 = var_t
82+
return var1, var2
83+
84+
list_x = [10,20]
85+
list_z = [30,40]
86+
list_r, list_s = chest(list_x,list_z)
87+
88+
print(f"X es {list_x} y Z es {list_z}")
89+
print(f"R es {list_r} y S es {list_s}")
90+

0 commit comments

Comments
 (0)