如何将指定的破折号替换为字母



我想写一个hangman程序,为了做到这一点,我必须用用户猜测的字母(guess(替换散列('-'(字母。但当我运行代码时,它会用用户的猜测字母替换所有哈希。代码看起来不错,但我没有得到想要的结果。

  • words是我在函数之前编写的单词列表
def word_guess():
random.shuffle(words)
word = words[0]
words.pop(0)
print(word)
l_count = 0
for letter in word:
l_count += 1
# the hidden words are shown a '-'
blank = '-' * l_count
print(blank)
guess = input("please guess a letter  ")
if guess in word:
# a list of the position of all the specified letters in the word
a = [i for i, letter in enumerate(word) if letter == guess]
for num in a:
blank_reformed = blank.replace(blank[num], guess)
print(blank_reformed)

word_guess()

例如:当word为"滑稽",guess为"n"时,输出为"nnnnn"。

我应该如何用guess字母替换所需的哈希字符串?

它替换了所有的散列

这正是blank.replace应该做的。

您应该做的是替换字符串中的单个字符。由于字符串是不可变的,所以不能真正做到这一点。但是,字符串的列表是可变的,所以您可以执行blank = ['-'] * l_count,这将是一个短划线列表,然后修改blank[num]:

for num in a:
blank[num] = guess
print(blank)

需要注意的几件事:

  • 低效/非Pythonpop操作(请参阅此(
  • l_count只是len(word)
  • 非蟒蛇,无法读取的替代品

相反,这里有一个更好的实现:

def word_guess() -> str:
random.shuffle(words)
word = words.pop()

guess = input()
out = ''
for char in word:
if char == guess:
out.append(char)
else:
out.append('-')
return out

如果您以后不打算使用正确猜测的位置,那么您可以简化代码的最后一部分:

word = 'hangman'
blank = '-------'
guess = 'a'
if guess in word:
blank_reformed = ''.join(guess if word[i] == guess else blank[i] for i in range(len(word)))

blank_reformed
'-a---a-'

(为了让整个游戏发挥作用,你还有一些工作要做…(

相关内容

  • 没有找到相关文章

最新更新