如何为build子手游戏建立与字符串长度相同的列表?

时间:2018-09-02 22:49:00

标签: python list

我正在编写一个子手游戏,无法弄清楚如何解释长度不一的单词,而且我的代码似乎不起作用。

以下是步骤:

  1. 从字符串列表中随机选择一个单词
  2. 构建的板类似于isEqual()
  3. 用户猜出一个字母
  4. 根据输入内容,用单词中的所有匹配项替换木板
  5. 在转弯或找到字母时结束游戏

if (isEqual(grid[0][0], xORo) &&
    isEqual(grid[0][1], xORo) &&
    // etc.

3 个答案:

答案 0 :(得分:2)

您需要遍历word的整个长度,而不仅仅是6个字母:

for i in range (0, len(word)):

不要将a放在列表中,以获取所需的格式:

a = ['_']*len(word)
print(a) # ['_','_','_','_','_','_']

在循环中,您应该直接访问i

if word[i] == letter:
    a[i] = letter

通过将字母列表连成一个字符串来检查游戏是否结束:

print(''.join(['h', 'i']) # 'hi'

if ''.join(a) == word:

如果他们赢了,break会退出while循环:

print("You won. ")
break

对于样式,在输入提示后添加一个空格:

letter = input('Enter a letter: ')

此外,如果不使用guesses变量,则将其删除。并且不要print(word)(一旦完成调试)。


注意:这假设word是一个字符串,而不是字符串列表。我相信这是一个更好的实现。

答案 1 :(得分:1)

一个工作示例:

word = "dead"
guesses = 0
turns = 11
a = ["_" for i in range(0,len(word))]
print(a)

print (word)
while turns > 0:
    letter = input('Enter a letter:')
    for i in range (0, len(word)):
        if word[i] == letter:
            a[i] = letter
    print(a)

    if "".join(a) == word:
        print("You won.")
        break
    turns -= 1

答案 2 :(得分:0)

我同意@JBallin, 但不是

for i in range (0, len(word)):

您可以使用

for index,ch in enumerate(word):

其中索引是从0到单词的长度,而ch是字符本身