que pseint programa piensas para numero juego algoritmo adivinar adivina python numbers

pseint - Juego de adivinar múltiples números de Python



programa para adivinar un numero en c++ (3)

En este momento, solo le está pidiendo al usuario una conjetura y añada la conjetura a la lista de Guess . Entonces la lista Guess tiene un elemento, pero estás usando Guess[1] , Guess[2] , etc., que por supuesto da como resultado el IndexError

Intento crear un juego de adivinar números con varios números. La computadora genera 4 números aleatorios entre 1 y 9 y luego el usuario tiene 10 posibilidades de adivinar los números correctos. Necesito los comentarios para mostrar como YYYY para 4 números correctos adivinados, YNNY para el primer y último número adivinado, etc. (se obtiene el punto). el código siguiente sigue volviendo diciendo IndexError: list index out of range .

from random import randint guessesTaken = 0 randomNumber = [] for x in range(4): tempNumber = randint(1, 9) randomNumber.append(tempNumber) Guess = [] Guess.append(list(input("Guess Number: "))) print(randomNumber) print(Guess) if randomNumber[0] == Guess[0]: print("Y") elif randomNumber[1] == Guess[1]: print("Y") elif randomNumber[2] == Guess[2]: print("Y") elif randomNumber[3] == Guess[3]: print("Y") elif randomNumber[0] != Guess[0]: print("N") elif randomNumber[1] != Guess[1]: print("N") elif randomNumber[2] != Guess[2]: print("N") elif randomNumber[3] != Guess[3]: print("N")


Necesitas cuatro conjeturas para hacer coincidir números aleatorios, también puedes abreviar tu código usando una lista de comp:

from random import randint guessesTaken = 0 randomNumber = [] Guess = [] for x in range(4): tempNumber = str(randint(1, 9)) # compare string to string randomNumber.append(tempNumber) Guess.append(input("Guess Number: ")) print("".join(["Y" if a==b else "N" for a,b in zip(Guess,randomNumber)]))

También puede usar enumerar para verificar elementos en índices coincidentes:

print("".join(["Y" if randomNumber[ind]==ele else "N" for ind, ele in enumerate(Guess)]))

Para dar al usuario conjeturas en un bucle:

from random import randint guessesTaken = 0 randomNumber = [str(randint(1, 9)) for _ in range(4)] # create list of random nums while guessesTaken < 10: guesses = list(raw_input("Guess Number: ")) # create list of four digits check = "".join(["Y" if a==b else "N" for a,b in zip(guesses,randomNumber)]) if check == "YYYY": # if check has four Y''s we have a correct guess print("Congratulations, you are correct") break else: guessesTaken += 1 # else increment guess count and ask again print(check)


Reordenare tu código un poco, para que no se aleje demasiado de lo que has hecho.

from random import randint guessesTaken = 0 randomNumbers = [] Guess = [] # Combine your guesses with your loop for x in range(4): tempNumber = randint(1, 9) randomNumbers.append(tempNumber) # This should be done four times too # In Python 2, instead of this: # Guess.append(input("Guess Number: ")) # do this: Guess.append(int(raw_input("Guess Number: "))) # raw_input and pass to int # in python 3, raw_input becomes input, so do this instead: # Guess.append(int(input("Guess Number: "))) print(randomNumbers) print(Guess)

Puede combinar estos en un bucle para evitar el código repetitivo:

if randomNumbers[0] == Guess[0]: print("Y") else: print("N") if randomNumbers[1] == Guess[1]: print("Y") else: print("N") if randomNumbers[2] == Guess[2]: print("Y") else: print("N") if randomNumbers[3] == Guess[3]: print("Y") else: print("N")

Tal vez, para imprimir el resultado deseado, por ejemplo, YNNY, así:

result = [] for index in range(4): if randomNumbers[index] == Guess[index]: result.append("Y") else: result.append("N") print(''''.join(result))

Si quiere un código terser, use la operación ternaria de Python:

result = [] for index in range(4): result.append("Y" if randomNumbers[index] == Guess[index] else "N") print(''''.join(result))

O use el hecho de que True == 1 y False == 0 como índices:

result = [] for index in range(4): result.append("NY"[randomNumbers[index] == Guess[index]]) print(''''.join(result))