Aquí una solución que sigue preguntando que horóscopo quieres ver hasta que el usuario quiera salir
// Objeto que guarda los horoscopos, se imprimen los horoscopos no importando como se escriba May/Minconst horoscopos ={aries:'21 marzo - 19 abril',tauro:'20 abril - 20 mayo',geminis:'21 mayo - 20 junio',cancer:'21 junio - 22 julio',leo:'23 julio - 22 agosto',virgo:'23 agosto - 22 septiembre',libra:'23 septiembre - 22 octubre',escorpion:'23 octubre - 21 noviembre',sagitario:'22 noviembre - 21 diciembre',capricornio:'22 diciember - 19 enero',acuario:'20 enero - 18 febrero',piscis:'19 febrero - 20 marzo'};// Evalua el signo y regresa el horóscopoconstcalcularSigno=function(signo){switch(signo.toLowerCase()){case'aries':console.log(horoscopos.aries);break;case'tauro':console.log(horoscopos.tauro);break;case'geminis':case'géminis':console.log(horoscopos.geminis);break;case'cancer':case'cáncer':console.log(horoscopos.cancer);break;case'leo':console.log(horoscopos.leo);break;case'virgo':console.log(horoscopos.virgo);break;case'libra':console.log(horoscopos.libra);break;case'escorpion':case'escorpión':console.log(horoscopos.escorpion);break;case'sagitario':console.log(horoscopos.sagitario);break;case'capricornio':console.log(horoscopos.capricornio);break;case'acuario':console.log(horoscopos.acuario);break;case'piscis':console.log(horoscopos.piscis);break;default:console.log('Ese signo no existe');break;}};// Arrow function que sirve para seguir preguntando el signo que quieres ver hasta que se escriba la palabra "salir"varpreguntarSigno=()=> signoZodiacal =prompt('¿Cuál es tu signo? escribe salir para que no vuelva a preguntar.');// Asigna valor a la variable signoZodiacal para entrar al whilepreguntarSigno();// Se ejecuta mientras el usuario no escriba la palabra "salir"while(signoZodiacal.toLowerCase()!=='salir'){calcularSigno(signoZodiacal);preguntarSigno();}```
esta muy bueno, tambien se prodria hacer con un arreglo
const signo =prompt('¿Cual es tu signo?')const horoscopos =['21 marzo - 19 abril','20 abril - 20 mayo','21 mayo - 20 junio','21 junio - 22 julio','23 julio - 22 agosto','23 agosto - 22 septiembre','23 septiembre - 22 octubre','23 octubre - 21 noviembre','22 noviembre - 21 diciembre','22 diciember - 19 enero','20 enero - 18 febrero','19 febrero - 20 marzo']constcalcularSigno=function(signo){switch(signo.toLowerCase()){case'aries':console.log(horoscopos[0])breakcase'tauro':console.log(horoscopos[1])breakcase'géminis':console.log(horoscopos[2])breakcase'cáncer':console.log(horoscopos[3])breakcase'leo':console.log(horoscopos[4])breakcase'virgo':console.log(horoscopos[5])breakcase'libra':console.log(horoscopos[6])breakcase'escorpión':console.log(horoscopos[7])breakcase'sagitario':console.log(horoscopos[8])breakcase'capricornio':console.log(horoscopos[9])breakcase'acuario':console.log(horoscopos[10])breakcase'piscis':console.log(horoscopos[11])breakdefault:console.log('Ese signo no existe')break}}calcularSigno(signo)
Una pregunta, intente seguir tu ejemplo pero no entiendo porque no se puede llamar a las propiedades del objeto usando la misma variable “signo”
Ejemplifico
let signo =prompt('cual es tu signo?')const horoscopos ={aries:'21 marzo - 19 abril',tauro:'20 abril - 20 mayo',geminis:'21 mayo - 20 junio',cancer:'21 junio - 22 julio',leo:'23 julio - 22 agosto',virgo:'23 agosto - 22 septiembre',libra:'23 septiembre - 22 octubre',escorpion:'23 octubre - 21 noviembre',sagitario:'22 noviembre - 21 diciembre',capricornio:'22 diciember - 19 enero',acuario:'20 enero - 18 febrero',piscis:'19 febrero - 20 marzo'};switch(signo){case'libra':console.log(horoscopos.signo);break;.....
Cuando corro el programa e introduzco el signo, el resultado es undefined
Gracias!
Tip para este ejercicio:
En vez de hacer un caso por cada una de las variaciones, desde un inicio podemos "modificar" la respuesta del usuario, para evitar errores.
Cómo podemos hacerlo? De esta manera
Pedimos los datos al usuario normalmente
var signo =prompt('¿Cual es tu signo?')
Creamos una variable nueva que modifique este texto
var signoLimpio = respuestaUsuario
.toLowerCase().trim().normalize('NFD').replace(/[\u0300-\u036f]/g,"")
Porqué sucede esto?
".toLowerCase()" hace a todas las letras minusculas
".trim()" remueve todos los espacios
".normalize('NFD')" y ".replace(/[\u0300-\u036f]/g,"")" eliminan los acentos
Para saber más revisa este link
Por último reemplazamos la variable "signo" por "signoLimpio" y LISTO
switch(signoLimpio){case'acuario':console.log('Imprime acuario')breakcase'leo':console.log('Imprime leo')breakcase'piscis':console.log('Imprime piscis')breakcase'escorpio':console.log('Imprime acuario')breakcase'tauro':case'tauró':console.log('Imprime acuario')break//cuando no se encuentra un caso valido se usa defaultdefault:console.log('Signo no encontrado')break}
Genial 🙌🙌🙌🙌
guardaré este aporte para recordarme aprender expresiones regulares pronto. 👍
Una buena idea es que la variable mesDelAno se le aplique .toUpperCase o toLowerCase , para que sin importar el case que use el usuario, estemos seguros de comparar contra minusculas o contra mayusculas.
gracias
let signo =prompt('¿Cual es tu signo?')constMENSAJE_PERSONALIZADO=(` Querido ${signo}: SALUD: Los astros te sonríen. DINERO: Los astros se rien. SEXO: Los astros se descojonan!!.`)switch(signo){case'acuario':console.log(MENSAJE_PERSONALIZADO)breakcase'piscis':console.log(MENSAJE_PERSONALIZADO)breakcase'virgo':console.log(MENSAJE_PERSONALIZADO)breakcase'aries':console.log(MENSAJE_PERSONALIZADO)breakcase'leo':console.log(MENSAJE_PERSONALIZADO)breakcase'geminis':console.log(MENSAJE_PERSONALIZADO)breakcase'escorpio':console.log(MENSAJE_PERSONALIZADO)breakdefault:console.log('Estas completamente jodido')break}
La estructura de control switch es recomendada cuando se va a evaluar una variable multiples veces, teniendo que hacer multiples if, por ejemplo:
let mesDelAno ="Julio"// Suponiendo que esta variable fue llenada antes...if(mesDelAno ==="Enero"){// algo pasa}elseif(mesDelAno ==="Febrero"){// algo pasa}elseif(mesDelAno ==="Marzo"){// algo pasa}//... y así sucesivamente
puede ser reemplazado por:
let mesDelAno ="Julio"// Suponiendo que esta variable fue llenada antes...switch(mesDelAno){case"Enero":// algo pasabreak;case"Febrero":// algo pasabreak;case"Marzo":// algo pasabreak;default:// cuando ninguna condicion se cumplebreak;}
Gracias
console.log("Clase estructura de control SWITCH \n");aries ={signo:'Aries',fecha_nacimiento:'Entre el 21 de marzo y el 19 de abril.',elemento:'Fuego',personalidad:'Impaciente, Impulsivo, Alegre, Lleno de vitalidad como la primavera.'}tauro ={signo:'Tauro',fecha_nacimiento:'Entre el 20 de abril y el 20 de mayo.',elemento:'Tierra',personalidad:'Amante de las buenas comidas y de los placeres carnales, Estable, Determinado, En muchas ocasiones un poco testarudo.'}geminis ={signo:'Géminis',fecha_nacimiento:'Entre el 21 de mayo y el 20 de junio.',elemento:'Aire',personalidad:'Incansable, Juguetón, Muy sociable.'}cancer ={signo:'Cáncer',fecha_nacimiento:'Entre el 21 de junio y el 22 de julio.',elemento:'Agua',personalidad:'Familiar,Sensible, Con una imaginación desbordante.'}leo ={signo:'Leo',fecha_nacimiento:'Entre el 23 de julio y el 23 de agosto.',elemento:'Fuego',personalidad:'Ambición, Perseverancia para cumplir sus metas, Simpatía.'}virgo ={signo:'Virgo',fecha_nacimiento:'Entre el 24 de agosto y el 22 de septiembre.',elemento:'Tierra',personalidad:'Detallista,Crítico, Excelente compañero.'}libra ={signo:'Libra',fecha_nacimiento:'Entre el 23 de septiembre y el 22 de octubre.',elemento:'Aire',personalidad:'El signo de la diplomacia, gran mediador, muy sociable.'}escorpio ={signo:'Escorpio',fecha_nacimiento:'Entre el 23 de octubre y el 21 de noviembre.',elemento:'Agua',personalidad:'Apasionado, determinado, siempre lleno de energía.'}sagitario ={signo:'Sagitario',fecha_nacimiento:'Entre el 22 de noviembre y el 21 de diciembre.',elemento:'Fuego',personalidad:'Optimista, aventurero, alegre.'}capricornio ={signo:'Capricornio',fecha_nacimiento:'Entre el 22 de diciembre y el 19 de enero.',elemento:'Tierra',personalidad:'Constante, determinado, trabajador sin igual.'}acuario ={signo:'Acuario',fecha_nacimiento:'Entre el 20 de enero y el 19 de febrero.',elemento:'Aire',personalidad:'impredecible, con mucho amigos , muy original.'}piscis ={signo:'Piscis',fecha_nacimiento:'Entre el 20 de febrero y el 20 de marzo.',elemento:'Agua',personalidad:'Sentimental, 100% emoción, amante de la música.'}functionimprimeMensaje(persona){console.log(`${persona.signo.toUpperCase()}\nNacido ${persona.fecha_nacimiento}\nEres un signo de ${persona.elemento}.\nTu personalidad: ${persona.personalidad}`);}var signo =prompt("¿Cuál es tu signo?: ").toLowerCase()switch(signo){case'aries':imprimeMensaje(aries)break;case'tauro':imprimeMensaje(tauro)break;case'géminis':case'geminis':imprimeMensaje(geminis)break;case'cancer':case'cáncer':imprimeMensaje(cancer)break;case'leo':imprimeMensaje(leo)break;case'virgo':imprimeMensaje(virgo)break;case'libra':imprimeMensaje(libra)break;case'escorpio':imprimeMensaje(escorpio)break;case'sagitario':imprimeMensaje(sagitario)break;case'capricornio':imprimeMensaje(capricornio)break;case'acuario':imprimeMensaje(acuario)break;case'piscis':imprimeMensaje(piscis)break;default:console.log("Debes ingresar un signo zodiacal válido!");break;}
que programa te montaste men, muy bien falta que se actualice la info del signo y quedas full
Muchas Gracias muy buen aporte
A lo que Sacha hizo con lo de las tildes se le llama “Transferencia de control”.
Lo mas usual es con prompt para captar datos del usuario, pero cuando no queremos datos pero si un true o false podemos usar confirm
¿Como hizo el profesor para subir la linea completa del codigo con el teclado?
Pd:Fue increible
Hola Jose!
Con Alt + felcha de navegación, puedes mover el codigo arriba o abajo como gustes, por ejemplo
Alt + Flecha arriba (Subo el código seleccionado)
Alt + Flecha abajo (Bajo el código seleccionado)
A mí me funciona ctrl + bloq mayús + FLECHA ARRIBA / ABAJO
Se puede presentar el caso que el usuario ingrese en minusculas o mayusculas su signo, para esto podemos usar los metodos .toUpperCase() o .toLowerCase() para converir lo ingresado por el usuario a mayuscuylas o minusculas. Tambien podemos quitar los epacios en blanco al inicio o al final con .trim().
Por ultimo use do-while para que pregunte hasta que el usuario ingrese una opción validad.
let signo;do{ signo =prompt(`Cual es tu Signo`).toUpperCase().trim();switch(signo){case`ARIES`:alert(`Eres Aries`)break;case`ACUARIO`:alert(`Eres Acuario`)break;case`PISIS`:alert(`Eres Pisis`)break;case`CANCER`:alert(`Eres Cancer`)break;case`TAURO`:alert(`Eres Tauro`)break;case`LEO`:alert(`Eres Leo`)break;case`VIRGO`:alert(`Eres Virgo`)break;case`LIBRA`:alert(`Eres Libra`)break;case`ESCROPION`:alert(`Eres Escorpio`)break;case`SAGITARIO`:alert(`Eres Sagitario`)break;case`CAPRICORNIO`:alert(`Eres Capricornoo`)break;default:alert(`No es un signo valido`); signo =false;break;}}while(!signo)
Que bien, no sabia para que servia .trim()
<script>var mascota =prompt('Tienes mascota?')switch(mascota){case'si'||'Si'||'sí'||'Sí':console.log('Espero te haga muy feliz. 😄')breakcase'no'||'No'||'NO':console.log('Los animales son una gran compañia.')breakdefault:console.log('No es un dato válido. 🤷♂')}</script> 😷 #QuedateEnCasa
var signoinicial =prompt('¿Cual es tu signo?')var signo = signoinicial.toLowerCase()var mensaje =''console.log(signo)switch(signo){case'acuario': mensaje ='Deja de creerte unico'breakcase'libra': mensaje ='Deja de querer complacer a todos'breakcase'geminis':case'géminis': mensaje ='Deja de manipular'breakcase'piscis': mensaje ='Deja de ser tan sensible'breakcase'cancer':case'cáncer': mensaje ='Deja el drama'breakcase'escorpio': mensaje ='Deja la intensidad'breakcase'aries': mensaje ='Deja de ser tan bossy'breakcase'sagitario': mensaje ='Deja de ser un niño'breakcase'leo': mensaje ='Deja de creerte el centro de atención'breakcase'capricornio': mensaje ='Deja de trabajar'breakcase'tauro': mensaje ='Deja de ser tan terco'breakcase'virgo': mensaje ='Deja el controlfreak'breakdefault: mensaje ='No conseguí su signo'break}document.write(`${signo} : ${mensaje}`)
Alberto, muy bien por ese 'lowerCase'. También se le puede agregar un 'trim' para remover espacios y 'normalize' con 'replace' para remover acentos:
Perfecto! Muchas gracias Clonathan!
EJERCICIO
Me gusta los contrastes de brillo que le das a tu código ¿cómo lo haces?
No soy mucho de Horoscopos, así que mejor hice uno del XI ideal de la fifa 2019, aprovechando que hoy fueron los premios jaja.
let jugador =prompt('¿Cuál es tu jugador favorito del XI ideal de la FIFA 2019?');switch(jugador){case'Messi':console.log('Excelente, el mío igual. Aparte ganó The best. GOAT');break;case'De Jong':console.log('Jugadorazo, excelente fichaje del FC Barcelona');break;case'De Ligt':console.log('¿El nuevo maldini?');break;case'Mbappe':console.log('El jugador joven mas audaz');break;case'Allison':console.log('El unico en remontarle dos veces al Barcelona.');break;case'Marcelo':console.log('¿Neta');break;case'Ramos':console.log('¿Neta');break;case'Modric':console.log('¿Neta');break;case'Van Dijk':console.log('El mejor central actualmente, por mucho.');break;case'Hazard':console.log('Jugadorazo con regate impresionante.');break;case'Cristiano':console.log('SIIIIIIIIIIIIU');break;default:console.log('Muy seguramente él no estuvo en el XI ideal. Checa de nuevo.');break;}```
Eliminar mayúsculas y acentos
var signo =prompt('cual es tu signo?').toLowerCase()var respuesta
signo = signo.replace('á','a')signo = signo.replace('é','e')signo = signo.replace('í','i')signo = signo.replace('ó','o')signo = signo.replace('ú','u')switch(signo){case'aries': respuesta ="Haga lo posible para desprenderse de aquello que le hace mal a su vida. Elija nuevos rumbos y vivirá una etapa de renovación interna muy enriquecedora."break;case'tauro': respuesta ='Lo más recomendable para esta jornada cuando intente comunicarse con alguien, será que busque un diálogo conciliador sin confrontar a la gente que lo rodea.'break;case'geminis': respuesta ='Relájese, ya que será una jornada donde su espontaneidad será bien recibida. No deje pasar el tiempo y exprese sus emociones en el momento oportuno.'break;case'cancer': respuesta ='Intente pensar en usted. Destínese tiempo para poder terminar esa carrera que hace tiempo comenzó y por diversas situaciones no pudo finalizar.'break;case'leo': respuesta ='Intente pensar en usted. Destínese tiempo para poder terminar esa carrera que hace tiempo comenzó y por diversas situaciones no pudo finalizar.'break;case'virgo': respuesta ='Sería bueno que aprenda y cambie la manera en que enfrenta la vida a diario. Comience a disfrutar de lo que tiene y no se haga tanto problema.'break;default: respuesta ='Agregue un signo sodiacal válido'}console.log(`${respuesta}`)
esta es una pequeña solución para que al escribir algo que no es se actualice la página.
default:alert('Porfavor escriba un signo válido.')location.reload()//Este parámetro actualiza la página.break```
😷 #QuedateEnCasa
Yo lo hice sobre guitarras :sunglasses::guitar:
alert("Guitarra según tu mes de cumpleaños")var marca =prompt("Cuando es tu cumpleaños?");switch(marca){case"enero":case"Enero":console.log("Tu guitarra ideal seria una Epiphone Les Paul Standard");break;case"febrero":case"Febrero":console.log("Tu guitarra ideal seria una Fender Classic 72 Telecaster Deluxe");break;case"marzo":case"Marzo":console.log("Tu guitarra ideal seria una LTD EC-1000 Evertune");break;case"abril":case"Abril":console.log("Tu guitarra ideal seria una Jackson JS32 Rhoads");break;case"mayo":case"Mayo":console.log("Tu guitarra ideal seria una Yamaha FX370CBL");break;case"junio":case"Junio":console.log("Tu guitarra ideal seria una Fender American Elite Stratocaster");break;case"julio":case"Julio":console.log("Tu guitarra ideal seria una Epiphone AJ-100CE");break;case"agosto":case"Agosto":console.log("Tu guitarra ideal seria una Gibson Les Paul Standard 50s Heritage Cherry Sunburst");break;case"septiembre":case"Septiembre":console.log("Tu guitarra ideal seria una Roundback");break;case"octubre":case"Octubre":console.log("Tu guitarra ideal seria una Gibson SG Special");break;case"noviembre":case"Noviembre":console.log("Tu guitarra ideal seria una SE Mark Tremonti");break;case"diciembre":case"Diciembre":console.log("Tu guitarra ideal seria una Ibanez GAX30-TR ");break;default:console.log("Creo que la guitarra no es lo tuyo, mejor compra un piano")break;}