es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Juego de adivinar la combinación de 4 dígitos.

Estoy intentando algo similar a esto: https://stackoverflow.com/questions/36801677/4-digit-guessing-game-python . Con pequeños cambios.

El programa genera números aleatorios entre 999 y 10000. El usuario, después de cada intento fallido, obtiene cuántos números acertó en la posición correcta y cuántos acertó pero no en la posición correcta. Por ejemplo, si el número aleatorio es 3691 y el usuario adivina 3619, obtiene 2 números en la posición correcta (3 y 6) y también 2 números correctos pero en la posición incorrecta (1 y 9).

No hay salida para los números que no adivinó y el juego se repite hasta que adivine los 4 dígitos en la posición correcta.

Mi idea es guardar los dígitos del número aleatorio en una lista y luego hacer lo mismo con el número de adivinanza del usuario. Luego comparamos el primer elemento de ambas listas, por ejemplo, combination_list[0] == guess_list[0], y si es correcto agregamos +1 al contador que llamamos “correcto”.

El problema es que no tengo una idea para los números que se adivinan correctamente pero no están en la posición correcta.

import random
combination = random.randint(1000, 9999)
print(combination)

digits_combination, digits_guess= [], []
temp = combination

while temp > 0:
    digits_combination.append(temp % 10)
    temp //= 10

digits_combination.reverse()
print(digits_combination)

guess = int(input("¿Cuáles son tus números? "))
while not 999 < guess < 10000:
    guess = int(input("¿Cuáles son tus números? "))

if guess != combination:
    while guess > 0:
        digits_guess.append(guess % 10)
        guess //= 10
    digits_guess.reverse()

if guess == combination:
    print("Tu combinación es correcta.")

correct_position = 0
correct = 0
test = digits_combination[:] # Copié la lista aquí

while guess != combination:
    while guess > 0:
        digits_guess.append(guess % 10)
        guess //= 10
    digits_guess.reverse()

    if digits_guess[0] == test[0]:
        correct_position += 1
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para determinar los números que se adivinan correctamente pero no están en la posición correcta, puedes usar un bucle anidado que recorra ambas listas al mismo tiempo y compruebe si hay dígitos coincidentes que no estén en la posición correcta. Aquí tienes un ejemplo de código:

        for i in range(len(digits_guess)):
            if digits_guess[i] == digits_combination[i]:
                correct_position += 1
                test.remove(digits_guess[i])
    
        for i in range(len(digits_guess)):
            if digits_guess[i] in test:
                correct += 1
                test.remove(digits_guess[i])
    

    El primer bucle for comprueba los dígitos que están en la posición correcta y los añade al contador correct_position. También elimina esos dígitos de la lista test, que es una copia de la lista digits_combination.

    El segundo bucle for recorre los dígitos restantes en la lista digits_guess y comprueba si están en la lista test. Si se encuentra un dígito en la lista test, significa que el dígito es correcto pero no está en la posición correcta. El bucle for suma 1 al contador correct y elimina el dígito de la lista test para evitar contarlo nuevamente.

    Después de estos dos bucles for, tendrás dos contadores: correct_position será el número de dígitos en la posición correcta y correct será el número de dígitos que son correctos pero no están en la posición correcta. Puedes imprimir estos contadores para dar al usuario información sobre cuántos dígitos ha adivinado correctamente.

Comments are closed.