如何更换' _'在列表中,其中包含与早期列表对应的字母

时间:2014-12-24 14:38:59

标签: python arrays list

我正在为我的学校项目制作一个刽子手游戏,并且遇到了问题。我无法使用相同的' _'来获取列表以在特定位置更新。与之前选择的单词列表相比较。

到目前为止的代码:

root = Tk()

word_list = ["APPLE", "PEAR", "BANNANA"]

word = word_list [random.randrange(-1,3)]

hidden_word = ["_ "] * len(word)
print (hidden_word)    #Placeholder/testing#

#Functions
def click_1 (text):
    print (text)       #Placeholder#


#Frames
hangman_frame = Frame(root).grid(row=0, column=0)
letter_frame = Frame(root).grid(row=1, column=0)



#Buttons
r = c = 0
for letter in string.ascii_uppercase:
    Button(letter_frame, text=letter, command=functools.partial(click_1, letter)).grid(row=r, column=c, sticky=W)
    c += 1
    if c > 12:
        c = 0
        r += 1

感谢您提供的任何帮助 - 我是python的新手,所以请原谅,如果这看起来很愚蠢!

2 个答案:

答案 0 :(得分:2)

尝试使用此功能而不是不断地隐藏单词,使用此功能可以将已经猜到的字母作为第二个参数发送:

def hide_word(word, letters=[]):
    letters = map(str.lower, letters)
    word = word.lower()
    print ''.join((letter if letter in letters else '_ ' for letter in word))

hide_word('hiddenword', ['i','d','n']) #_ idd_ n_ _ _ d

答案 1 :(得分:1)

这是一个片段,可以让您更好地了解该做什么:

def reveal(word, letters):
    return ''.join([w if w.lower() in letters.lower() else "_" for w in word])
print reveal("Banana", "ba")

输出:

  

Ba_a_a

你发送两个字符串到reveal函数会发生什么,一个是要猜的字,一个是已经猜到的字母。然后组成一个新的字符串,替换所有未被占位符猜测的字母' _'。