El mundo de la programación en Python no solo se compone de operaciones matemáticas, sino también de manejar datos complejos como las cadenas de texto. Las cadenas son secuencias de caracteres y representan nuestro primer tipo de datos no escalar. Son esenciales para manipular texto y entender cómo utilizarlas eficientemente a menudo marca la diferencia entre un código básico y uno avanzado.
¿Cómo definir y operar con cadenas?
Comenzar a trabajar con cadenas en Python es sencillo, pero ciertas prácticas pueden optimizar el proceso:
Definición de cadenas: Puedes declarar una cadena utilizando tanto comillas simples (' ') como dobles (" "). Aunque técnicamente no hay diferencia, muchos programadores prefieren usar comillas simples como estándar personal, reservando las dobles para comentarios en el código.
Operadores comunes en cadenas:
Concatenación: Utiliza el operador + para unir cadenas. Por ejemplo, "Hola, " + "mundo" produce "Hola, mundo".
Repetición: El operador de multiplicación * permite repetir cadenas. Si escribes "Hola" * 3, obtienes "HolaHolaHola".
¿Cómo mejorar la legibilidad con cadenas de formato?
Python ofrece una manera más legible de manejar concatenaciones a través de las cadenas de formato. Simplemente comienza la cadena con una f y utiliza las llaves {} para incluir expresiones dentro de la cadena:
nombre ="Platzi"mensaje =f"Yo amo a {nombre}"print(mensaje)# Salida: Yo amo a Platzi
¿Qué son las operaciones con índices y rebanadas?
Las cadenas, similares a las listas, te permiten acceder a sus elementos individuales usando índices:
Acceso mediante índice: Usando [], accede a un carácter específico. Recuerda que el índice inicia en cero: cadena[0] captura el primer carácter.
Rebanadas (Slicing): Accede a un subconjunto de la cadena usando inicio:fin:paso. Por ejemplo, cadena[1:4] selecciona caracteres desde el índice 1 al 3, no incluyendo el índice final.
¿Cómo manejar cadenas inmutables?
Las cadenas en Python son inmutables, es decir, no pueden ser modificadas una vez creadas. Sin embargo, puedes reasignar una variable a una nueva cadena:
cadena ="Hola"cadena +=", mundo"# Ahora cadena es "Hola, mundo"
¿Cómo obtener entrada del usuario?
El uso de input() permite recibir datos del usuario. Por defecto, esta función devuelve cadenas; sin embargo, para convertir estas a otro tipo, necesitas envolverlas con int(), float(), etc.:
nombre =input("¿Cuál es tu nombre? ")print(f"Tu nombre es {nombre}")
¿Qué precauciones se deben tomar al recibir números?
Al recibir un número desde el usuario, convierte la cadena resultante a otro tipo de dato si planeas realizar operaciones matemáticas:
numero =int(input("Escribe un número: "))suma = numero +10print(f"Suma: {suma}")
Con estas técnicas y conceptos, ya puedes manipular cadenas en Python y tomar input del usuario. Te invito a seguir practicando, desarrollando programas más complejos e interactivos. Y si tienes dudas, no olvides consultar la documentación oficial de Python o utilizar foros de comunidad. ¡El mundo de la programación está lleno de posibilidades, y mejorarás con cada línea de código que escribas!
nombre =input('Bienvenido!, Escribe tu nombre: ')saludo = f'Hola {nombre}, es un placer conocerte!'print(saludo)print(f'¿Sabías que el mensaje anterior tiene {len(saludo)} caracteres?')
Este es mi primer reto en la vida de hacer un programa y lo hice de la siguiente manera:
Estuve revisando los ejercicios de los demás compañeros y es super interesante conocer las diferentes formas de hacer este mismo ejercicio de manera más detallada o involucrando mejores practicas.
Cadenas
• Los objetos de tipo str pueden representarse con “ ” o ‘ ’.
• El operador + tiene diferente significado según el tipo de dato (overloaded). Con cadenas significa concatenación.
• El operador * es el operador de repetición con cadenas.
• Las cadenas son inmutables.
Entradas
• Python tiene la función ++input++ para recibir datos del usuario del programa.
• Input siempre regresa cadenas, por lo que si queremos utilizar otro tipo, tenemos que hacer type casting
Cadenas (Strings)
Una cadena es una secuencia de caracteres.
Podemos usar comillas simples o dobles (' ' o " ").
Las cadenas son inmutables, podemos reasignar la misma variable a una cadena distinta, pero la cadena que se declare en un principio, una vez declarada ya no puede modificarse
Usando Operadores
'123' * 3 (esta expresión imprimirá la cadena la cantidad de veces que la declaremos, en este caso 3 veces).
'123' + ´456' _(esta expresión en vez de sumar las cantidades, lo que realmente hace, es 'concatenar' , es decir, juntar las dos cadenas). _
Cadena de Formato
La cadena de formato, nos puede ayudar a hacer más entendible nuestro código, dando la facilidad de juntar cadenas dentro de otras, empezamos con una f, y dentro de ella lo que queremos concatenar: f' cadena {cadena2}'.
Funciones con cadenas
len(longitud) nos da la longitud de la cadena
cadena[comienzo:fin:pasos] _nos ayuda a generar subcadenas que podemos manipular.
Ejemplos:
my_str = 'Platzi'
my_str[0]
'P'
nos devuelve el carácter en la posición inicial, recordemos que en programación se cuenta iniciando de 0
my_str[2:]
'atzi'
Comienza a partir del segundo carácter
my_str[:3]
'Pla'
Finaliza en el tercer carácter
my_str[::2]
'Paz'
Da dos pasos, e imprime el carácter en esa posición
Entradas (Inputs)
Python usa la función input para recibir datos del usuario del programa.
Los inputs siempre regresan **cadenas, si queremos usar otro tipo tenemos que hacer type casting.
Ejemplo:
numero = input('Escribe un numero: ')
Escribe un numero: 45(introducimos el numero, que se guardara como una cadena, no como un valor numérico)
print(type(numero))
<class 'str'> (Al imprimir el tipo, podemos ver que se trata de una cadena).
Si queremos que sea tomado como un valor numérico, demos agregar una función previa al input:
numero = int(input('Escribe un numero: '))
(El int puede ser sustituido por, float, bool, etc.)
print(type(numero))
<class 'int'> (Al imprimir el tipo, podemos ver que se interpreta como un número).
A mi me funciono con puros parentesis para saber la cantidad de carácteres:
nombre = input('Escribe tu nombre: ')
Escribe tu nombre: Ziletai
print('Hi ' + nombre + ' mucho gusto')
Hi Ziletai mucho gusto
print('Hi ' + nombre + ' mucho gusto' + ' tu nombre tiene ' + str(len(nombre)) + ' carácteres')
Hi Ziletai mucho gusto tu nombre tiene 7 carácteres
Esa "F" viene del inglés: "formatted string literals"
Lo importante que debes saber es que esa f antes del string le dice a python que dentro de ese string puede haber variables dentro de llaves {}.
Es decir, si pusieras solo las comillas sin la f python no interpretaría las variables dentro del string
Es una notacion llamada fomat string, se usa para concatenar variables con strings, en caso de que la variable sea un valor entero o boleano nos ahorramos el hecho de aplicar la funcion
str(1223)
y simplemente concatenamos sin tener que convertir todos los valores no string a una string
asi fue como di la solución al reto sugerencias para mejorarlo ?
def run(): name =input('escribe tu nombre: ') saludo = f'Hola como estas {name}'print(saludo) cadenaLog =len(saludo)print(f'la longitud de la cadea es {cadenaLog}')if __name__ =='__main__':run()
Hola! aqui esta el ejercicio... estuve teniendo problemas con visual code... y como es mi primera vez en cualquier tipo de programacion tuve que tomar prestado el codigo de uno de los comentarios abajo... pero siento que es una gran victoria el hecho que me pudiera salir!
<>>> nombre =input('Mi nombre es: ')Mi nombre es:Cesar>>> saludo = f'Hola {nombre} este es tu primer programa :D '>>> programa = f'Este es el saludo : "{saludo }" y su longitud es: "{len(saludo)}"'>>> programa
'Este es el saludo : "Hola Cesar este es tu primer programa :D " y su longitud es: "41"'>>>>
Devuelve hola más lo que hayas escrito en la consola cuando te pregunta escribe tu nombre .
Para los que arrancan mucho ánimo. Les dejo un par de funciones adicionales para strings bien útiles e interesantes.
frase ='python es un gran lenguaje'# para saber cuantas veces aparece un caracter en nuestro string usamos la funcion count.frase.count('e')# si queremos reemplazar un caracter por otro usamos la funcion replace usando la logica: frase.replace('letra a cambiar','letra nueva').frase.replace('p', q')
# para separar nuestra string en una lista con todos los string segun un patron como el espacio entre palabras hacemos
frase.split(' ')
Cadenas
Las cadenas son secuencias de caracteres.
'123'#Esta es una cadena
Los operadores que utilizamos tienen otros significados. Cuando utilizamos el operador multiplicar (*) lo que haremos es multiplicar la cadena por el numero de veces que deseamos, y con el operador suma (+) concatenaremos varias cadenas, sin embargo Python nos permite concatenar de una forma mas legible.
'123'*3# Con el operador *'123123123'# Obtenemos este resultado.'123'+'456'# Y el operador +'123456'# Concatenara las cadenas.('Hip '*3)+'hurra'# Tambien podemos combinar operadores'Hip Hip Hip hurra'f'{"Hip "*3}hurra'# En Python podemos usar la expresion f para concatenar'Hip Hip Hip hurra'
A las cadenas les podemos asignar diversas funciones:
len: nos indica la longitud de la cadena.
indexing: con esto podemos acceder a cada uno de los elementos de esta cadena a través de indices.
slicing: podemos dividir las cadenas subcadenas.
my_str ='Hello, world!'# Creamos una cadenalen(my_str)# Consultamos por su longitud13my_str[0]# Con slicing consultamos por el 1er caracter.'H'my_str[1]# Consultamos por el 2do caracter.'e'my_str[2]# Consultamos por el 3er caracter.'l'my_str[2:]# Traemos desde el 3er caracter hasta el final.'llo, world!'# Es importante indicar que los finales no son inclusivos.my_str[:3]# Tremos desde el principio hasta el 3ro.'Hel'my_str[2:5]# Traemos desde el 3er caracter hasta el 5to.'llo'my_str[::2]# Traemos desde el principio hasta el final saltando de 2 en 2.'Hlo ol!'
Los objetos de tipo str pueden representarse con comillas dobles (") o comillas simples (')
El operador suma (+) tiene diferente significado según el tipo de dato. Con cadenas significa concatenación.
El operador multiplicación (*) es el operador de repetición con cadenas.
Las cadenas son inmutables. Esto significa que una vez que creamos una cadena en memoria esta ya no puede cambiar, podemos reasignar la variable que la referencia a otro valor, pero la cadena en memoria no cambiara.
Entradas
Las entradas son una forma recibir información para que las computadoras logren realizas cómputos.
Python tiene la función input para recibir datos del usuario del programa
Input siempre regresa cadenas, por lo que si queremos utilizar otro tipo, tenemos que hacer type casting. El type casting es transformar el tipo de dato en otro, con esto podemos transformar el tipo y guardarlo en memoria asignandolo a una variable.
nombre = input('Cual es tu nombre: ')# Utilizamos input para ingresar un nombreCual es tu nombre: Karl
print(nombre)# Vemos que contiene nuestra variable nombreKarl
print(f'Tu nombre es {nombre}')# Imprimimos una cadena concatenando una oracion con nuestra variable.Tu nombre es Karl
numero = input('Escribe un numero: ')# Utilizamos input para ingresar un numeroEscribe un numero: 45numero # Vemos que contiene nuestra variable numero'45'type(numero)# Vemos el tipo de dato que es numero<class 'str'># Y vemos que es un strnumero = int(input('Escribe un numero: '))# Pero si definimos previamente el input como intEscribe un numero: 45type(numero)# Nuestra variable numero sera de tipo int<class 'int'>
Este es el reto. lo dejo con los errores que tuve por si a alguien le sirve para entender mejor
>>> nombre =input("cual es tu nombre: ")cual es tu nombre: david
>>>print("hola"+ nombre +"mucho gusto")holadavidmucho gusto
>>>print("hola "+ nombre +" mucho gusto")hola david mucho gusto
>>>print("hola "+ nombre +" mucho gusto "+" tu nombre tiene "+len(nombre)+" caracteres")Traceback(most recent call last):File"<stdin>", line 1,in<module>TypeError: can only concatenate str(not "int") to str
>>>print("hola "+ nombre +" mucho gusto "+" tu nombre tiene "+int(len(nombre))+" caracteres")Traceback(most recent call last):File"<stdin>", line 1,in<module>TypeError: can only concatenate str(not "int") to str
>>>print("hola "+ nombre +" mucho gusto "+" tu nombre tiene "+int(len(nombre))+" caracteres")Traceback(most recent call last):File"<stdin>", line 1,in<module>TypeError: can only concatenate str(not "int") to str
>>>>>>>>>>>>>>>>>> nombre
'david'>>> len_nombre =len(nombre)>>> len_nombre
5>>>print("hola "+ nombre +" mucho gusto "+" tu nombre tiene "+ len_nombre +" caracteres")Traceback(most recent call last):File"<stdin>", line 1,in<module>TypeError: can only concatenate str(not "int") to str
>>>print("hola "+ nombre +" mucho gusto "+" tu nombre tiene "+str(len_nombre)+" caracteres")hola david mucho gusto tu nombre tiene 5 caracteres
>>>```
Hola Juan. Esta bien tu lógica pero creo que Aroesti se refería a que aparezca la longitud de la cadena justo en la misma cadena.
Creo que este código logra:
def run(): name =input("Hola. Escribe tu nombre aquí: ") new_str = f'Hola {name}. Buenas noches. Esta cadena tiene longitud = ' lenght_of_str_0 =len(new_str) lenght_of_str_1 =len(str(lenght_of_str_0))+len(new_str)print(f'{new_str}{lenght_of_str_1}')if __name__ =='__main__':run()
Espero que te sirva. Salud2
Mejor tarde que nunca, así que, la mejor implementación que se me ocurrió es esta:
def run()_
nombre =input('Escribe tu nombre: ')print(f'Un saludo {nombre}. \nTu nombre tiene {len(nombre)} caracteres.')```
if __name__ =='__main__':run()