Retos de programación para cualquier lenguaje - Tercer nivel: strings

Pregunta de la clase:
Héctor Daniel Vega Quiñones

Héctor Daniel Vega Quiñones

ProfesorPregunta

Ufff... puedes decir que ya tienes bases sólidas para crear programas sencillos y que funcionen. Ahora darás un paso más manipulando strings, tarea común de un desarrollador :muscle:

Recuerda que algunos lenguajes no están optimizados para ciertas tareas y esto no es excusa para rendirnos ;) Por ejemplo, en el nivel anterior hubo quien trabajó con C++ y encontramos recursos que complementan al lenguaje.

Si aún no has pasado por los niveles anteriores, siempre puedes ponerte al corriente:

¡Muy bien, muy bien! Arranquemos 🏋️‍♀️🏋️‍♂️


Reto #1 Longitud del string

Pide a tu usuario que ingrese el nombre de su curso favorito, obtén la longitud de ese string y muéstralo en pantalla.

Reto #2 'Suma' de strings

Crea un programa en el que le pidas en 3 variables distintas: nombre, apellido y comida favorita. Como salida mostrarás el mensaje

Hola, mi nombres es {nombre} {apellido} y mi comida favorita es {comida}
en un solo string.

Reto #3 Ajusta las iniciales

Ahora, pedirás a tu usuario que ingrese su nombre, apellido y país de origen en minúsculas. Después mostrarás los datos de salida con mayúscula inicial al tratarse de nombres propios.

Reto #4 String fragmentado

Pongámonos más exigentes 💥 Solicita a tu usuario que indique una oración de 10 o más caracteres, la línea de un poema o canción funcioona excelente. Calcula la longitud del string, pide un número de rango inicial y final que esté entre la longitud del string para al final mostrar el fragmento que incluya los caracteres en ese intervalo.

Reto #5 Mayúsculas y minúsculas

Solicita a tu usuario que indique 2 palabras, donde al mostrarlas en pantalla una estará totalmente en mayúsculas y otra en minúsculas ¿fácil, no?

Reto #6 Nombres cortos y largos

Ya sabemos trabajar con nombres ¿pero qué pasa si cumple ciertas cualidades? Tu usuario ingresará su nombre, si tiene una longitud mayor a 5 caracteres mostrarás un saludo con su nombre en pantalla. Si tiene menos de 5 caracteres, pedirás su apellido, mostrarás el saludo con nombre y apellido. En ambos casos deberás mostrarlos con mayúscula inicial.

Reto #7 ¡Hablemos Pig Latin! (Puerco Latino) 🐷

Solo una cosa, pide a tu usuario que ingrese una palabra y tradúcela a Pig Latin.

Espera ¡¿qué?!

PuercoLatino es como el idioma de la "efe", donde cambiamos las palabras bajo ciertas condiciones. En este caso será así:

  • La primer consonante de una palabra se pasa al final y se agrega la sílaba "ay".
  • Si una palabra inicia con vocal, se agrega "way" al final.

Ejemplos:

  • Platzi :point_right: Latzipay
  • Abeja :point_right: Abejaway
49 respuestas
    Rocio Calderon Hernandez

    Rocio Calderon Hernandez

    Estudiante

    def longitud(): curso = input('Escribe el nombre de tu curso favorito: ') print(f'La longitud de palabras de tu curso es: ', len(curso))

    def suma(): nombre = input('¿Cual es tu nombre? ') apellido = input('¿Cual es tu apellido? ') comida = input('¿Cual es tu comida favorita? ') print( f'Hola, mi nombre es {nombre} {apellido} y mi comida favorita es {comida} ')

    def iniciales(): nombre = input('¿Cual es tu nombre?(en minusculas) ') apellido = input('¿Cual es tu apellido?(en minusculas) ') pais = input('¿Cual es tu pais de origen?(en minusculas) ') nombre = nombre.title() apellido = apellido.title() pais = pais.title() print(f'Hola mi nombre es {nombre} {apellido} y mi pais de origen es {pais}')

    def fragmentado(): frase = input('Escribe una frase de un poema o canción de mas de 10 caracteres: ') longitud = len(frase) rango_inicial = int(input(f'Escribe el rango inicial, teniendo en cuenta que no sea mayor que {longitud} ')) rango_final = int(input('Dinos el rango final que quieres para la busqueda: '))

    fragmento = frase[rango_inicial:rango_final] print(f'Las palabras que estan dentro del rango elegido son: {fragmento} ')

    def palabras(): palabra1 = input('Escribe una palabra usando mayusculas y minusculas: ') palabra2 = input('Escribe otra palabra usando mayusculas y minusculas: ')

    palabra1 = palabra1.upper() palabra2 = palabra2.lower() print(f'{palabra1} y {palabra2}')

    def nombres(): nombre = input('Hola! ¿ Cual es tu nombre? ') nombre = nombre.capitalize() if len(nombre) > 5: print(f'Hola {nombre}, que tal estas? ') else: apellido = input('¿ Cual es tu apellido? ') apellido = apellido.capitalize() print(f'Hola {nombre} {apellido}, que tal estas? ')

    def pig_latin(): palabra = input('Introduce una palabra para que la traduzcamos a Pig Latin!: ') vocales = {'a', 'e','i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'}

    for vocal in vocales: if palabra[0] == vocal[0:]: palabra = palabra[0:] + 'way' print(palabra.capitalize()) break if palabra[0] != vocal[0:]: palabra = palabra[1:] + palabra[0] + 'ay' print(palabra.capitalize())

    if name == 'main': print('********Reto 1 ************') longitud() print('********Reto 2 ************') suma() print('********Reto 3 ************') iniciales() print('********Reto 4 ************') fragmentado() print('********Reto 5 ************') palabras() print('********Reto 6 ************') nombres() print('********Reto 7 ************') nombres() print('********Reto 8 ************') pig_latin()

    Jesus Velez Flores

    Jesus Velez Flores

    Estudiante

    Aquí dejo mis retos con JavaScript.

    ´´´´// Reto #1

    function longitudString(){ let curso = prompt('¿Cual es el nombre de tu curso favorito?');

    console.log(`La longitud del nombre de tu curso favorito es: ${curso.length}`)

    }

    longitudString();

    // Reto #2

    function sumaStrings(){ let nombre = prompt('¿Cual es tu nombre?'); let apellido = prompt('¿Cual es tu apellido?'); let comidaFavorita = prompt('¿Cual es tu comida favorita?');

    console.log(`Hola, mi nombre es ${nombre} ${apellido} y mi comida favorita es ${comidaFavorita}`);

    }

    sumaStrings();

    // Reto #3

    function ajustaIniciales(){ let nombre = prompt('Dame tu nombre, en minusculas'); let apellido = prompt('Dame tu apellido, en minusculas'); let pais = prompt('Dame tu pais de origen, en minisculas');

    nombre = nombre[0].toUpperCase() + nombre.slice(1); apellido = apellido[0].toUpperCase() + apellido.slice(1); pais = pais[0].toUpperCase() + pais.slice(1); console.log(`Tu nombre es: ${nombre} \n Tu apellido es: ${apellido}\n Tu pais de origen es: ${pais}`);

    }

    ajustaIniciales();

    // Reto #4

    function stringFragmentado(){ let oracion = prompt('Dame una oracion de 10 o mas caracteres'); let oracionLongitud = oracion.length;

    alert(`A continuacion me daras un rango inicial y un rango final entre los valores 1 y ${oracionLongitud}`); let rangoInicial = parseInt(prompt(`Dame el valor inicial (1 y ${oracionLongitud})`)); let rangoFinal = parseInt(prompt(`Dame el valor final (1 y ${oracionLongitud})`)); let oracionFinal = oracion.slice(rangoInicial - 1, rangoFinal); console.log(`La oracion queda de la siguiente forma: ${oracionFinal}`);

    }

    stringFragmentado();

    // Reto #5

    function mayusculasMinusculas(){ let palabraUno = prompt('Dame una palabra cualquiera'); let palabraDos = prompt('Dame otra palabra cualquiera');

    console.log(`La primer palabra fue: ${palabraUno.toUpperCase()} \n La segunda palabra fue: ${palabraDos.toLowerCase()}`);

    }

    mayusculasMinusculas();

    // Reto #6

    function nombreCortosYLargos(){ let nombre = prompt('¿Cual es tu nombre?'); let nombreLongitud = nombre.length;

    if(nombreLongitud > 5){ console.log(`¡Hola! ${nombre = nombre[0].toUpperCase() + nombre.slice(1)}`); }else{ let apellido = prompt('¿Cual es tu apellido?'); console.log(`¡Hola! ${nombre = nombre[0].toUpperCase() + nombre.slice(1)} ${apellido = apellido[0].toUpperCase() + apellido.slice(1)}`); }

    }

    nombreCortosYLargos();

    // Reto #7

    function puercoLatino(){ let palabra = prompt('Dame una palabra'); let primerLetra = palabra[0]; let vocales = ['A', 'E', 'I', 'O', 'U']; let flag = false; let palabraFinal = '';

    for(let i = 0; i < vocales.length; i++){ if(primerLetra.toUpperCase() === vocales[i]){ palabraFinal = palabra + 'way'; flag = true; } } if(flag != true){ palabraFinal = palabra.slice(1) + primerLetra.toLowerCase() + 'ay'; } palabraFinal = palabraFinal[0].toUpperCase() + palabraFinal.slice(1); console.log(`Tu palabra traducida a Pig Latin es: ${palabraFinal}`);

    }

    puercoLatino();´´´´

    Oscar Eduardo Palomino Cárdenas

    Oscar Eduardo Palomino Cárdenas

    Estudiante

    Cumplido.

    Daniel Morales

    Daniel Morales

    Estudiante

    Terminado:

    Repositorio

    Están en Platzi3.js

    Daniel Cardona Velasquez

    Daniel Cardona Velasquez

    Estudiante

    Aquí esta mi solución en Python... La implemente con funciones y simplemente hay que descomentar la que quieran usar en la zona del main.

    Retos de programacion - tercera parte

    Guillermo Sanchez

    Guillermo Sanchez

    Estudiante

    ¡Spoiler alert!

    PigLatin Python compacto

    :D

    piglatin.png

    Enrique Orozco Gaytán

    Enrique Orozco Gaytán

    Estudiante

    Hola! Aquí comparto mi solución del reto: challengeLevel3.png

    Enrique Orozco Gaytán

    Enrique Orozco Gaytán

    Estudiante

    El Reto #7 fue el más desafiante para mí: challenge7Level3.png