如何覆盖列表?

2024-06-01 08:07:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有个问题。我正在为绞刑架游戏编程。一切都很好,但我有点纠结。用户选择一个字母,该字母将显示在屏幕和相应的框中。但是每次用户选择一个字母时,我以前选择的那个字母就不见了

你可以看到:

import pyfiglet
import random
import os

def start():
    print(pyfiglet.figlet_format("BIENVENIDO AL JUEGO DEL AHORCADO"))
    print("""
    ¡ A D I V I N A   L A   P A L A B R A !
    """)

def game():
    with open("./archivos/data.txt", "r", encoding="utf-8") as f:
        palabras = list(f)
        palabra = random.choice(palabras)
        palabra = palabra.replace("\n", "") 
    
    letras = [i for i in palabra]
    guiones = []

    for i in letras:
        guiones.append("_")
    
    print(" ".join(guiones))
    print("")

    guiones = []
    while guiones != letras:
        letra = input("Elige una letra: ")
        
        
        for i in palabra:  
            if i == letra:
                guiones.append(letra)
            else:
                guiones.append("_")   
        print(" ".join(guiones)) 
          
        guiones.clear() 



        

def run():
    start()
    game()

if __name__ == "__main__":
    run()

Tags: 用户inimportfordef字母randomstart
1条回答
网友
1楼 · 发布于 2024-06-01 08:07:13

由于您使用的是列表(这些列表是可变的),因此您可以将“u”翻转到猜测的字母,而不必触摸其他字母。为此,一种解决方案是使用索引访问给定位置的列表,如下面的代码段所示:

#   guiones = [] do NOT clear guiones!

    while guiones != letras:
        letra = input("Elige una letra: ")
        
        
        for i in range(len(palabra)):  
            if palabra[i] == letra:
                guiones[i] =letra

        print(" ".join(guiones)) 
          

相关问题 更多 >