Olá pessoal! Precisava de uma ajuda, para saber o que tem de errado no meu código. O exercício é fazer um programa que adivinha o número, mas tem um um número limitado de tentativas. Fiz o código, quando executo faz certinho (pelo que vi), porém aparece esse erro pra mim: “>>>>Code is incorrect
Make sure you’re decrementing the value the variable tries after generating and print a new guess”.
Vou deixar aqui o código, espero não estar tão feioso…
Você está redefinido o valor do alvo (target) a cada iteração do while e eu creio que isso não seja o correto… Que tal assim:
<!DOCTYPE html><htmllang="pt-BR"><head><metacharset="UTF-8"><title>Teste de Função</title><script>functionsoothsayer(){vartarget=Math.floor(Math.random()*11);varguess=Math.floor(Math.random()*11);vartries=5;console.log("Target: "+target);while(tries>0){guess=Math.floor(Math.random()*11);console.log("Guess: "+guess);//target = Math.floor(Math.random() * 11);//console.log("Target: " + target);console.log("Tries: "+tries--);if(guess==target&&tries>0){console.log("Yay! You’ve done it!");break;}console.log("That sad! It was not this time...");}}soothsayer();</script></head><body></body></html>
Valeu pela nomeação das variáveis no console… esqueci o mais básico rsrs…
Então, coloquei lá assim, mas ainda retorna um esse erro: “Make you you’re printing the value of guess to the console in the line below assigning it a new value”.
Não entendi o que fazer… o valor de guess não é sempre novo? E esse imprimir na linha de baixo, não seria o que já está acontecendo? Olha aí como fica lá…
“Make you you’re printing the value of guess to the console in the line below assigning it a new value” - Imprima o valor de guess no console na linha abaixo atribuindo-lhe um novo valor. Creio que esse erro se deve ao fato de que fora do while há uma atribuição do valor de guess e de novo dentro do while para só então imprimir. Com efeito, a ordem mais inteligente seria:
functionsoothsayer(){vartarget=Math.floor(Math.random()*11);varguess=Math.floor(Math.random()*11);vartries=5;console.log("Target: "+target);while(tries>0){console.log("Guess: "+guess);console.log("Tries: "+tries--);guess=Math.floor(Math.random()*11);if(guess==target&&tries>0){console.log("Yay! You’ve done it!");break;}console.log("That sad! It was not this time...");}}soothsayer();
Ou seja, a cada atribuição guess = Math.floor(Math.random() * 11) há uma impressão no console correspondente. Também pode sugerir que se deva eliminar a inicialização de guess fora do while:
functionsoothsayer(){vartarget=Math.floor(Math.random()*11);varguess;vartries=5;console.log("Target: "+target);while(tries>0){guess=Math.floor(Math.random()*11);console.log("Guess: "+guess);console.log("Tries: "+tries--);if(guess==target&&tries>0){console.log("Yay! You’ve done it!");break;}console.log("That sad! It was not this time...");}}soothsayer();
M
Mi_silva
Então, se eu coloco como na primeira ordem que você colocou, aparece esse erro: “The first line in your while’s block should assign a new value to the variable guess.”.
E se eu coloco na segunda ordem, volta o erro anterior: “Make you you’re printing the value of guess to the console in the line below assigning it a new value”…
Não consigo entender…