我正在为我的学校项目制作一个刽子手游戏,并且遇到了问题。我无法使用相同的' _'来获取列表以在特定位置更新。与之前选择的单词列表相比较。
到目前为止的代码:
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的新手,所以请原谅,如果这看起来很愚蠢!
答案 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
函数会发生什么,一个是要猜的字,一个是已经猜到的字母。然后组成一个新的字符串,替换所有未被占位符猜测的字母' _'。