如何在列表中替换和保存输出

2024-09-30 03:25:29 发布

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

为我自己开发了一个hangman游戏,我真的被困在了一个地方,一旦在一个单词中找到了一个正确的字母,它就会保存在那个索引位置,我正试图用return语句在Tkinter的gui中实现它,在这里使用print,这样循环就不会结束。不过,我将只显示用于替换word中字母的代码,而不是整个游戏代码,以尽量避免混淆任何人

主要问题-找不到保存用户在word中输入的字母的方法,每次它返回新的输出

import random

underlines = []


def random_gen_word():
    list_of_words = ['happy']
    begin = 0
    end = len(list_of_words) - 1
    global random_word
    random_word = list_of_words[random.randint(begin, end)]
    return random_word


saved_random_word = random_gen_word().upper()


def user_input_for_game():
    while True:
        underlines = ["_"] * len(saved_random_word)
        user_input = input("Enter text: ").upper()
        if user_input in saved_random_word:
            # # below for loop will index every letter i = x from the random word
            # # if statement for checking if input was the letter in the word
            for i, x in enumerate(saved_random_word):
                if x == user_input:
                    underlines.insert(i, user_input)
                    # removes underline once a letter is found in underlines/word
                    underlines.pop()
                    print(underlines)


print(user_input_for_game())

Tags: ofinforinputif字母randomlist
2条回答

这是因为underlines在while循环中被重新初始化。另外,您不需要使用insert()pop()来更新underlines,只需使用underlines[i]来更新所需的字符即可。最后,您可以使用random.choice()来简单地random_gen_word()

以下是修改后的代码:

import random

def random_gen_word():
    list_of_words = ['happy']
    return random.choice(list_of_words)

def user_input_for_game():
    saved_random_word = random_gen_word().upper()
    underlines = ["_"] * len(saved_random_word)
    while True:
        user_input = input("Enter text: ").upper()
        for i, x in enumerate(saved_random_word):
            if x == user_input:
                underlines[i] = user_input
        print(underlines)

user_input_for_game()

它没有保存,因为您在循环开始时一直重置它(underlines)。把它放在前面,像这样:

def user_input_for_game():
    underlines = ["_"] * len(saved_random_word) # outside
    while True:
        user_input = input("Enter text: ").upper()
        if user_input in saved_random_word:
           
            for i, x in enumerate(saved_random_word):
                if x == user_input:
                    underlines.insert(i, user_input)
                    
                    underlines.pop()
                    print(underlines)

试运行:

Enter text: h
['H', '_', '_', '_', '_']
Enter text: a
['H', 'A', '_', '_', '_']
Enter text: p
['H', 'A', 'P', '_', '_']
['H', 'A', 'P', 'P', '_']
Enter text: y
['H', 'A', 'P', 'P', 'Y']

编辑:在函数外部可以有一个underlines变量:

underlines = ["_"] * len(saved_random_word)

submit_button_actions

只要在user_input_for_game中有一个参数,并在最后返回更新的下划线

相关问题 更多 >

    热门问题