当前位置: 首页 > 面试题库 >

Python hang子手,取代字母?

沈博涉
2023-03-14
问题内容

blanks如果猜中了,如何使我的python hangman游戏用正确的字母替换变量中的下划线。

我有正确的if语句,但不确定如何替换字母。

这是我尝试的:

def main()
    if choice in correctAnswer:
        print("\nCorrect!\n------...\n")

        index = 0
        while index < len(correctAnswer):
            index = correctAnswer.find(choice, index)
            if index == -1:
                break
            print(index)
            index += 1

        used.append(choice)

        places = []
        place=correctAnswer.index(choice)
        blanks[place]=choice
        blanks=''.join(blanks)
main()

那给我typeError: TypeError: 'str' object does not support item assignment

有关如何执行此操作的任何想法?

谢谢

更新:

blanks = list(makeBoard(correctAnswer))

print (correctAnswer)

def main():
    used = []
    print(blanks)
    choice = input("\nEnter a letter:")

    if len(choice) == 1 and special_match(choice) == True:

        if choice in correctAnswer:
            print("\nCorrect!\n--------------------------------------------------------------------\n")

            index = 0
            while index < len(correctAnswer):
                index = correctAnswer.find(choice, index)
                if index == -1:
                    break
                print(index)
                index += 1

            used.append(choice)

            [choice if letter == choice else blank for blank, letter in zip(blanks, correctAnswer)]

            main()

问题答案:

您最好使用列表,因为字符串是不可变的

>>> blanks = list('_______')
>>> answer = 'hangman'
>>> guess = 'g'

>>> blanks[answer.index(guess)] = guess
>>> blanks
['_', '_', '_', 'g', '_', '_', '_']

因此,这保持可blanks变性,因此您可以随意替换元素。然后,当您想以字符串形式显示给用户时

>>> ''.join(blanks)
'___g___'

列表理解可以处理重复的字母

>>> [guess if letter == guess else blank for blank, letter in zip(blanks, answer)]
['_', 'a', '_', '_', '_', 'a', '_']

编辑
请参阅以下快速演示,请注意您应添加对错误猜测的处理

answer = 'hangman'
blanks = list('_'*len(answer))
for guess in set('hangman'):
    blanks = [guess if letter == guess else blank for blank, letter in zip(blanks, answer)]
    print(''.join(blanks))

输出量

h______
h__g___
h__gm__
ha_gma_
hangman


 类似资料:
  • 我已经被这段代码困扰了一段时间,非常感谢您的帮助。因此,基本上我的刽子手代码运行良好,但控制台中的显示,破折号应该反映哪些字母猜对了,哪些字母仍然需要猜对,这是完全错误的。我将在这里发布我的代码。由于时间很长,我将只发布相关的方法。我觉得问题似乎出在显示数组列表上,我无法持续更新它。

  • 本文向大家介绍手写代码:两个字符串的最长公共子序列?相关面试题,主要包含被问及手写代码:两个字符串的最长公共子序列?时的应答技巧和注意事项,需要的朋友参考一下 参考回答:  

  • 本文向大家介绍手写代码:字符串逆序相关面试题,主要包含被问及手写代码:字符串逆序时的应答技巧和注意事项,需要的朋友参考一下 参考回答:  

  • 在 String 中提供了两个截取字符串的方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容。下面对这两种方法分别进行介绍。 1. substring(int beginIndex) 形式 此方式用于提取从索引位置开始至结尾处的字符串部分。调用时,括号中是需要提取字符串的开始位置,方法的返回值是提取的字符串。例如: 2. substring(int beginIndex,int e

  • 本文向大家介绍iOS获取手机ip地址代码,包括了iOS获取手机ip地址代码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了iOS获取手机ip地址的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍手写代码:字符串复制函数相关面试题,主要包含被问及手写代码:字符串复制函数时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 模拟strcpy: 模拟strncpy: 模拟strcat: 模拟strncat: