¿Cómo obtengo la entrada del usuario y LUEGO ejecuto el código? Mi código no me deja responder, y simplemente continúa.
Intenta ejecutar esto en el nodo:
const readline = require("readline").createInterface({ input: process.stdin, output: process.stdout, }); function sleep(milliseconds) { const date = Date.now(); let currentDate = null; do { currentDate = Date.now(); } while (currentDate - date < milliseconds); } let num1 = 0; let num2 = 0; let mode = "+"; let ans = 0; let input = ""; while (true) { num1 = Math.floor(Math.random() * 10); num2 = Math.floor(Math.random() * 10); ans = num1 + num2; console.log(`What is ${num1} + ${num2}?`); readline.question("Enter Answer >>", (ans) => { readline.close(); }); sleep(3000); if (ans == input) { console.log("Correct!"); } else { console.log("Wrong! Review this video for help: *insert youtube link*."); console.log(`Answer: ${ans}`); } sleep(3000); }Si esta pregunta no está clara, por favor dígame e intentaré explicar lo que quiero decir.
Cómo debería funcionar (escrito en python):
import random n1 = 0 n2 = 0 ans = 0 userinput = "" while True: n1 = random.randrange(0, 10) n2 = random.randrange(0, 10) ans = n1 + n2 userinput = input(f'What is {str(n1)} + {str(n2)}? >> ') if int(userinput) == ans: print("Correct!") else: print("Wrong!")Una diferencia clave entre node.js y Python que debe comprender desde el principio es que node.js no bloquea en absoluto: no puede bloquear el hilo principal (o en el caso de solo Javascript) esperando la entrada del usuario. Por lo tanto, debe escribir el programa de manera diferente, porque el nodo no está hecho para escribir ese tipo de programa.
Esto debería hacer el truco:
const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.on('close', () => { process.exit(0); }); function askQuestion(num1, num2) { return new Promise(resolve => { rl.question(`What is ${num1} + ${num2}? (press q to quit)`, input => { resolve(input); }); }); } function sleep(n) { return new Promise(resolve => setTimeout(resolve, n)); } async function turn() { const num1 = Math.floor(Math.random() * 10); const num2 = Math.floor(Math.random() * 10); const userInput = await askQuestion(num1, num2); if (userInput === "q") return userInput; if (+userInput === num1 + num2) { console.log('correct'); } else { console.log('wrong'); } } (async function() { let result; while (true) { result = await turn(); if (result === "q") break; await sleep(3000); } rl.close(); })();Esto puede parecer largo y complejo en comparación con la versión de Python que publicaste, pero si realmente escribiste el programa de Python equivalente usando asyncio, Futures y un bucle de eventos, se parecería mucho más a este.