刽子手游戏复制人物名单问题

2024-06-09 02:45:20 发布

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

我在做一个刽子手游戏,结果名单上出现了问题。如果用户输入与列表中的任何字符匹配,则会找到该字母在所述列表中的位置,然后将其添加到空白列表中的该位置。然而,像“电视”这样包含重复字符的词是行不通的。相反,它将打印“tel\u vis\u on”。抱歉,如果这是一个模糊的职位,我不知道的术语。你知道吗

def guess():
    letter = input ("Please enter a letter:")
    if letter in word:
        print ("Correct!")
        letterPlace = word.index(letter)
        answer[letterPlace] = letter
        print (*answer)
    else:
        print ("Wrong!")

    if answer == word :
        print ("You guessed it! Well Done!")
        #end here
    else:
        guess()

from random import choice
objects = ["computer","television"]
word = choice(objects)
word = (list(word))
wordcount = len(word)
answer = ["_"]*wordcount
print (*answer)
guess()

Tags: answer游戏列表ifobjects字符wordcountelse
3条回答

这里的问题是你只替换第一次出现的那封信。为了替换所有发生的事件,使用re函数如下:

def guess():
    letter = input ("Please enter a letter:")
    if letter in word:
        print ("Correct!")
        letterPlace = [m.start() for m in re.finditer(letter, word)]
        for index in letterPlace:
            answer[index] = letter

如果你想试试这个。如果你不想要太复杂的东西,很容易理解:

def findOccurences(s, ch):
    return [i for i, letter in enumerate(s) if letter == ch]

def guess():
    letter = input ("Please enter a letter:")
    if letter in word:
        print ("Correct!")
        letterPlace = findOccurences(word,letter)
        for i in letterPlace:
            answer[i] = letter
        print (*answer)
    else:
        print ("Wrong!")

    if answer == word :
        print ("You guessed it! Well Done!")
        #end here
    else:
        guess()

from random import choice
objects = ["computer","television"]
word = choice(objects)
word = (list(word))
wordcount = len(word)
answer = ["_"]*wordcount
print (*answer)
guess()

顺便说一句,打得不错。你知道吗

在这一部分:

if letter in word:
    print ("Correct!")
    letterPlace = word.index(letter)
    answer[letterPlace] = letter

word.index(letter)将返回字母第一次出现的索引。你知道吗

因此,您将仅用字母替换第一个下划线。请改为:

if letter in word:
    print ("Correct!")
    for letterPlace in (idx for idx,l in enumerate(word) if l==letter):
        answer[letterPlace] = letter

代码循环,如果找到字母,生成器表达式将生成索引,以替换下划线。你知道吗

相关问题 更多 >