Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
10
respuestas

INQUIETUD

Me gustaria saber con que funcion se logra que nuestro programa cuando el usuario ingresa una letra y no un numero

10 respuestas

No entendí la pregunta, te referís a saber cuál función hace que cuando se ingresa un dato del tipo string lo detecte como un número?

si cuando el usuario ingrese un letra o frase y el programa le diga que no es un numero, si no una letra y no lo deje avanzar

Uhmm... podrías crear un condicional y un bucle que tire números del 0 al 10, la condicional que diga que si la variable que pide el dato al usuario es distinto a los números arrojados por el bucle que ejecute una alerta que diga que el dato que ingreso no es un número

Buena pregunta, pero lo más probable es que más adelante del curso, esté la respuesta.

si pruebas tu juego intentando poner una letra o una palabra sigue funcionando pero te dice usted error el numero pensado es 10 yo lo intente al ver tu pregunta

Si, lo revise y no funciona, a esperar que alguno que sepa mucho lo resuelva entonces

Si quieres que se vuelva a ejecutar y que pida nuevamente el número, seria ingresar en una función el código desde donde pide el ingreso del número y volverla a llamar en el ultimo else

      <script>
        let br = "<br />";
        let numberRandom = 0, numberInput;

        function jumpLine() {
            document.write(br.repeat(2));
        }

        function toPrint(text) {
            document.write(text);
            jumpLine();
        }

        function random(min, max) {
            let result = Math.floor(Math.random() * (max - min + 1)) + min;
            return result;
        }

        numberRandom = random(1, 10);

        function repeat() {
            numberInput = parseInt(prompt("Ingrese el número del 1 al 10"));
            if (Number(numberInput) && numberInput > 0 && numberInput <= 10) {
                if (numberRandom == numberInput) {
                    toPrint(`El número ingresado ${numberInput} es el correcto`);
                } else {
                    toPrint(`El número era ${numberRandom}`);
                }
            } else {
                alert("Ingrese un número valido del 1 al 10");
                repeat()
            }
        }
        repeat();
    </script>

Si pones el código en una función que se llame en caso de que no cumpla con las condiciones, siempre va a ser llamada y pedir un número valido

        function repeat() {
            numberInput = parseInt(prompt("Ingrese el número del 1 al 10"));
            if (Number(numberInput) && numberInput > 0 && numberInput <= 10) {

                if (numberRandom == numberInput) {
                    toPrint(`El número ingresado ${numberInput} es el correcto`);
                } else {
                    toPrint(`El número era ${numberRandom}`);
                }
            } else {
                alert("Ingrese un número valido del 1 al 10");
                repeat();
            }
        }
        repeat();

La función Number(), valida que sea número, este en string o number, a diferencia del parseInt que si ingresas el número con letras va a tomar el número inicial.

Number(2)
// devuelve un 2

Number("2")
// devuelve un 2

Number("2w")
// devuelve NaN

parseInt("2w")
// devuelve un 2, ya que paseInt  devuelve un entero de la base especificada. sea binaria, octal, hexadecimal, 
// decimal por defecto entre otras tantas que hay.

parseInt("a2")
// devuelve NaN

parseInt("A2", 16)
// devuelve 162 , ya que se le especifica la base 16 que toma las letras de la a hasta la f

parseInt("F", 16);
// devuelve 15,  base hexadecimal que vendría siendo 
//0 = 0 
//1 = 1
//2 = 2
//3 = 3
//4 = 4
//5 = 5
//6 = 6
//7 = 7
//8 = 8
//9 = 9
//a = 10
//b = 11
//c = 12
//d = 13
//e = 14
//f = 15

Hola, podés usar la función isNaN() que intenta convertir el parámetro pasado a un número. Si el parámetro no se puede convertir, devuelve true; en caso contrario, devuelve false.

Te muestro un ejemplo en el programa de adivinar el número:

<meta charset="utf-8">

<h1> PROGRAMA JUEGO </h1>

<script>

function saltarLinea () {
    document.write ("<br>")
    document.write ("<br>")
    document.write ("<br>")
}

function imprimir (frase) {
    document.write(frase);
    saltarLinea();
}

let numeroPensado = Math.round(Math.random()*10);
let intentos = 3;
let contador = 1;

let numeroLanzado;

while (contador <= intentos) {

        numeroLanzado = parseInt(prompt("Ingrese un numero entre 0 y 10"));

        //si es un número && no dejaron el espacio en blanco
        if(!isNaN(numeroLanzado) && numeroLanzado != null){

            if (numeroPensado == numeroLanzado) {

            alert("Has acertado en el intento " + contador + ".El numero pensado era " + numeroPensado);
            break; 

            } else {

            alert("No has acertado");

            }

            contador ++;

          } else{
              alert('Por favor digite un número');
          }

    }

        if (numeroPensado == numeroLanzado) {

            imprimir("Has acertadado en el intento " + contador + ".El numero pensado era " + numeroPensado);
    }

        else {

            imprimir("No ha acertado, el numero pensado era " + numeroPensado);
        }

    imprimir("FIN DEL JUEGO")

</script>