2017-08-03 43 views
-1

這是我當前的代碼(不完全):如何找到列表中的組件特定字符的蟒蛇劊子手

import random 
words = ["absurd","zombie","jazz","rhythm","galaxy","tangerine","awkward","jelly","zigzag","glove"] 
secretWord = random.choice(words) 
currentGuess = "-" * len(secretWord) 
while currentGuess != secretWord: 
    print(currentGuess) 
    input("Guess a letter: ") 

當你運行該程序時,它選擇一個關鍵詞,打印破折號的量單詞中的字符數量並要求您猜出一個字母。

現在有人可以解釋,給我一個提示,或告訴我如何檢查一個字符(用戶猜對字母)是在secretWord(從列表中產生一個隨機單詞),以及這個字母在這個單詞中的位置。

謝謝

+2

'如果選擇在secretWord中:'' –

+1

secretWord.find(選擇)'。它返回字母的索引,如果不存在則返回-1。 –

+0

是的,如果他們幫助你,你可以選擇[標記答案](https://stackoverflow.com/help/someone-answers)。這是對社區表示感謝的一種很好的方式。 –

回答

2

開始與一個空字符串:

userGuesses = '' 

隨着用戶猜字,把它添加到userGuesses

userGuesses += input('Enter a character: ')[0] 

要顯示的字符串給用戶時,最簡單的選擇是使用正則表達式:

import re 

secretWord = ... 
userGuesses = ... 
print(re.sub('[^%s]' %userGuesses, '_', secretWord)) 

你不需要

  1. 查找字符是否存在

  2. 找到匹配的索引/指數

只要保持跟蹤用戶的猜測,以及用戶是否已成功猜出所有人物或不成功。你可以判斷爲通過做沿線的

wordToShow = re.sub('[^%s]' %userGuesses, '_', secretWord) 
if wordToShow.count('_') == 0: 
    .... # user guessed every letter 

一個例子一句:

In [747]: secretWord = 'rhythm' 

In [748]: userGuesses = 'hm' # user guessed h and m 

In [749]: re.sub('[^%s]' %userGuesses, '_', secretWord) 
Out[749]: '_h__hm'