1

プログラムが単語リストから単語をランダムに選択し、ユーザーが単語を推測する必要がある単語推測ゲームを作成したいと考えています。

  • ユーザーは一度に 1 文字しか推測できません。
  • ユーザーは、推測の失敗を 6 回まで許可されます。(6回失敗すると負け)。
  • ユーザーが 6 回失敗する前に完全な単語を推測した場合、ユーザーの勝ちです。

だから私は自分のプログラムでかなりの数の問題に直面しています:

  1. 推測の次のラウンドに進むときに、推測された文字が空白のままになるようにするにはどうすればよいですか?
  2. 単語に同じ文字が 2 つ含まれている場合、空白にも表示するにはどうすればよいですか?
  3. 各ラウンドでユーザーが逃した文字をすべて表示するにはどうすればよいですか?

これが私がこれまでにしたことです:

import random

wordlist = ['giraffe','dolphin',\
            'pineapple','durian',\
            'blue','purple', \
            'heart','rectangle']

#Obtain random word
randWord = random.choice(wordlist)

#Determine length of random word and display number of blanks
blanks = '_ ' * len(randWord)
print ()
print ("Word: ",blanks)


#Set number of failed attempts
count = 6

#Obtain guess
while True:
    print ()
    guess = input ("Please make a guess: ")   
    if len(guess) != 1:
        print ("Please guess one letter at a time!")
    elif guess not in 'abcdefghijklmnopqrstuvwxyz':
       print ("Please only guess letters!")

#Check if guess is found in random word
    for letters in randWord:
        if guess == letters:
            letterIndex = randWord.index(guess)
            newBlanks = blanks[:letterIndex*2] + guess + blanks[letterIndex*2+1:]
            print ("Guess is correct!")
        else:
            count -=1
            print ("Guess is wrong! ", count, " more failed attempts allowed.")
    print() 
    print("Word: ",newBlanks) 

取得したい結果 (randWord 'purple' の場合):

Word: _ _ _ _ _ _ 
Missed: 
Please make a guess: l
Guess is correct!


Word: _ _ _ _ l _ 
Missed:
Please make a guess: z
Guess is wrong! 5 more failed attempts allowed.


Word: _ _ _ _ l _ 
Missed: z
Please make a guess: o
Guess is wrong! 4 more failed attempts allowed.


Word: _ _ _ _ l _ 
Missed: z, o
Please make a guess: p
Guess is correct!


Word: p _ _ p l _ 
Missed: z, o
Please make a guess: e
Guess is correct!


Word: p _ _ p l e 
Missed: z, o
Please make a guess: r
Guess is correct!


Word: p _ r p l e 
Missed: z, o
Please make a guess: u
Guess is correct!


Word: p u r p l e 
YOU WON!
4

2 に答える 2

0

推測の次のラウンドに進むときに、推測された文字が空白のままになるようにするにはどうすればよいですか?

次のラウンドのために、推測された文字と空白を含む文字列を保存するだけです。から毎回再計算していますwordlist(毎回再計算することもできますが、文字の検索機能を変更する必要があります。回答2を参照してください)

単語に同じ文字が 2 つ含まれている場合、空白にも表示するにはどうすればよいですか?

検索ループを変更します。最初に一致する文字が見つかった後、検索を続行する必要があります。

letterIndex = randWord.index(guess)文字列で最初に見つかった推測のみを返します。

各ラウンドでユーザーが逃した文字をすべて表示するにはどうすればよいですか?

それらを別の文字列またはリストに格納します。そのため、いつでも印刷することができます。

于 2013-11-12T10:25:27.563 に答える