【问题标题】:Storing location of characters in string在字符串中存储字符的位置
【发布时间】:2016-09-23 01:21:08
【问题描述】:

我在学校的空闲时间正在编写一个 Hangman 程序,作为 Python 的入门级项目,我终于遇到了一个障碍。

我想做什么:

到目前为止,我已经按照输入的单词的大小打印了一块板子,我可以通过工作分数来判断猜测是否正确。现在我需要做出正确的猜测,并将 str(board) 中正确的下划线更改为它们的实际字母。为此,我想在 FULL CORRECT WORD 中获取猜到的字符(如果正确)的位置,然后简单地将板中的该位置更改为正确的字母。抱歉啰嗦了!这是我的代码。

print("Welcome to Tyler's Hangman game!!!! Player one, input a word for player two to guess, lowercase!\n")

playAgain = True
guessing = True
#assure game starts in the True state

while playAgain == True:

    word = str(raw_input())
    wordLength = int(len(word))
    board = "_ " * wordLength
    lives = 9
    #initialize/reset variables on a new play
    
    while guessing == True:
    
        print("\n" * 15)
        print("Now its player two's turn to make a guess! You have 9 lives! Only one letter at a time, lowercase!\n")
        print(board + "Lives: " + str(lives) + "\n")
        #print board + lives
        
        guess = str(raw_input())
        
        if guess in word:
            print("Correct!")
            word.index(guess)
            
        else:
            print("Wrong.")
            score -= 1
            #check guess and change board
             

以 if guess in word: 开头的语句让我开始感到困惑。谢谢!!

我很困惑的片段

        if guess in word:
            print("Correct!")
            word.index(guess)
            

【问题讨论】:

  • 您对此有何困惑。您能解释一下哪些行为不符合您的预期吗?
  • if guess in word 检查字符串word 中的子字符串guess。如果为真,它会打印“正确”,然后打印出索引guess 第一次出现在。当然,print(word.index(guess)) 更干净。
  • 啊我想我不明白索引做了什么。我不想打印索引,我只想检查字符出现在哪些点,然后我想稍后在程序中使用这些整数

标签: python


【解决方案1】:

我将针对您的实际问题提出替代解决方案。变异字符串在 Python 中不是很惯用,而且容易出错。相反,我的方法是跟踪已猜到的字母,然后根据该字母和实际答案计算棋盘状态。

answer = 'hello world'
guessed = ['a', 'e', 'm', 'r']
def compute_board(answer, guessed):
    return ''.join(c if c == ' ' or c in guessed else '_' for c in answer)
compute_board(answer, guessed) # gives _e___ __r__

现在您可以轻松地从guessed 列表的长度中获取猜测的数量,您可以通过检查他们的猜测是否已经在列表中轻松检查重复猜测,并且您可以通过添加它们来轻松添加猜测到列表的末尾。

【讨论】:

  • 这是一种更加紧凑和有用的做事方式,感谢您的回复。正如我所说,我是该语言的新手,并且非常诚实地编码本身,所以我一直在寻找方法来压缩我冗长且不必要的代码,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-28
  • 1970-01-01
相关资源
最近更新 更多