0
votes

Logique JavaScript manquant

Je suis nouveau dans ce monde de codage et apprendre javascript comme une première langue. Je suis au milieu de la solidification de mes compétences javascript que j'ai rassemblées jusqu'à présent. La question que j'ai est ce que je manque dans mon code .. Peut-être qu'un pointeur n'est pas la réponse complète aidera

Le but de mon code est simplement d'obtenir des entrées des utilisateurs finaux et si les entrées utilisateur correspondent à la valeur que j'ai stocké dans ma variable numéros_to_guess que la sortie doit être "bien fait smart ass" sinon réessayer avec une limite de 3/4 tentatives p>

"Veuillez essayer à nouveau" est d'où je rencontre la boucle se produit une fois. P>

let number_of_guesses = 0
let number_to_guess = 50
let limit = 4
let guess = prompt("enter a guess")

while (guess != number_to_guess) {
    if (guess != number_to_guess) {
        guess = prompt("enter another guess")
        number_of_guesses = number_of_guesses + 1
    } else {
        console.log("you smart ass")
    }
}

if (number_of_guesses === limit) {
    console.log("you have run out goes")
}


1 commentaires

Et quelle est votre question?


4 Réponses :


0
votes

Le problème est votre condition de boucle. Vous avez pendant (devinez! = Number_to_guess); code>. En raison du point-virgule, cela raccourcit efficacement votre boucle de temps avec un corps vide. C'est pourquoi votre boucle ne fonctionne pas correctement. Essayez avec ce qui suit:

let number_of_guesses = 0; 
let number_to_guess = 50;  
let limit = 4; 
let guess = prompt("enter a guess");

while (guess !== parseInt(number_to_guess) && number_of_guesses < limit) {
  guess = prompt("enter another guess");
  number_of_guesses++;
}

if(number_of_guesses===limit) {   
  console.log("you have run out goes");
}
else {
  console.log("you smart ass");
}


0 commentaires

0
votes

Peut-être un meilleur moyen de le faire sans une boucle de temps. Cela utilise la récursion et est un moyen plus performant pour résoudre ce problème.

let number_of_guesses = 0 
let number_to_guess = 50  
let limit = 4 

const guess = () => {
    let userGuess = prompt("enter a guess")
    if(parseInt(userGuess) !== number_to_guess){
        number_of_guesses++
        if(number_of_guesses < limit){
            guess()
        } else {
            console.log("you have run out goes")
        }
    } else {
        console.log("you smart ass") 
    }
}
guess()



0 commentaires

0
votes

Vous étiez vraiment proche, il suffit de poser un problème avec votre boucle tandis que:

let number_of_guesses = 0;
let number_to_guess = 50;
let limit = 4;
let guess = prompt("Guess A Number");

while (guess != number_to_guess && number_of_guesses < limit) {

    var remaining = limit - number_of_guesses;

    if (remaining == 1)
        guess = prompt(`Guess Again (Last Chance)`);
    else
        guess = prompt(`Guess Again (${remaining} Tries Remaining)`);

    number_of_guesses = number_of_guesses + 1;

    if (guess == number_to_guess)
        alert("Correct!");
    else if (number_of_guesses == limit)
        alert("Too Many Tries...");
}


1 commentaires

Cheers John, j'ai fait des corrections au code actuel et cela fonctionne en utilisant votre "variable restante" ainsi que la condition de boucle supplémentaire merci !!



0
votes
let number_of_guesses = 0
let number_to_guess = 50
let limit = 3
let guess = prompt("enter a guess")

while (guess != number_to_guess && number_of_guesses<limit) {
   var remaining = limit - number_of_guesses;
    if (guess != number_to_guess) {
        guess = prompt("enter another guess" + remaining)
        number_of_guesses = number_of_guesses + 1
    } 
}

if (number_of_guesses === limit) {
    console.log("you have run out goes")
} else if (guess=number_to_guess) {
  console.log("well done you smarty")
}

0 commentaires