-4

絞首刑執行人プログラムの割り当てを機能させようとしています。つまり、このゲームの要点は、最初にプレーヤーに単語を選択させ、次にユーザーが文字を入力し続けて単語を取得することです。ユーザーが 6 回間違えるか、正しい単語を推測すると、ゲームは終了します。したがって、これはプログラムがどのように進むべきかです:

Please enter an integer number (0<=number<10) to choose the word in the list: 1

出力から、リストには 10 個の単語があり、ユーザーがインデックス 1 の単語 (horse) を選択したことがわかります。

コンピューターは、選択した単語の長さをユーザーへのヒントとして出力します。

The length of the word is: 5

これに続いて、最初の推測を求めるプロンプトが表示されます。

Please enter the letter you guess: t

推測に対する応答として、コンピューターは推測が正しかったかどうか (ミステリー ワードに文字が見つかったかどうか)、それまでに一致した文字を出力し、推測が間違っていた場合は、「ハングマン」のグラフィックが表示されます。「horse」という単語には文字「t」が見つからないため、この場合、次の出力が表示されます。

The letter is not in the word.
Letters matched so far: _____
------------------

ここで、3 行目は「Hangman」グラフィックの 1 行目を示しています。このグラフィックは、ユーザーが間違いを犯すにつれて「大きく」なります。ユーザーがこれまでに 6 回未満の間違いを犯した場合、コンピューターは次の推​​測を求める作業に戻ります。この例では、これまでの間違いの数は 1 であるため、コンピューターは次の推​​測のプロンプトに戻ります。ユーザーが次に入力する文字が「e」であるとします。

Please enter the letter you guess: e
The letter is in the word.
Letters matched so far: ____e

この場合、文字が見つかりました (「horse」という単語の最後の文字です)。一致は 3 行目に示すように示されます。ここで、" _ _e" には 4 つのアンダースコア文字があり、"horse" の最初の 4 つのまだ一致していない文字に対応し、その後にこれまで一致した単一の文字である "e" が続きます。その後、相互作用が繰り返されます。例として、ユーザーが間違った推測をしただけで、それ以上「馬」の文字を見つけられなかった場合を考えてみましょう。完全な出力は次のようになります。

Please enter the letter you guess: u
The letter is not in the word.
Letters matched so far: ____e
------------
| |

Please enter the letter you guess: a
The letter is not in the word.
Letters matched so far: ____e
------------
| |
| O

Please enter the letter you guess: i
The letter is not in the word.
Letters matched so far: ____e
------------
| |
| O
| / |

Please enter the letter you guess: d
The letter is not in the word.
Letters matched so far: ____e
------------
| |
| O
| / |
| |

Please enter the letter you guess: b
The letter is not in the word.
Letters matched so far: ____e
------------
| |
| O
| / |
| |
| / |
|
|

Too many incorrect guesses. You lost!
The word was: horse.
Goodbye! 

プレイヤーがいつ正しい文字を推測するかを考えてみましょう

Please enter the letter you guess: o
The letter is in the word.
Letters matched so far: _o__e


Please enter the letter you guess: r
The letter is in the word.
Letters matched so far: _or_e


Please enter the letter you guess: h
The letter is in the word.
Letters matched so far: hor_e


Please enter the letter you guess: s
The letter is in the word.
Letters matched so far: horse

You have found the mystery word. You win!
Goodbye!

これは私がこれまでに持っているものです:

words = ['hello', 'horse', 'bye', 'moose', 'earth']    

#Choosing word
choose=input('Please enter an integer number 0<=number<10 to choose the word: ')
#check validity of guess
notValid=checkValidity(guess)

secret=words[int(choose)]
#print length of word
lenword=len(secret)
print('The length of the word is %i' %lenword)

while notValid==False:
    mistake=0

    while mistake<6:
        guess=input('Please enter the letter you guess: ')
        for letter in secret:
            if guess == letter:
                print('The letter is in the word.')
        else:
            print('The letter is not in the word.')
            mistake+=1

したがって、私の問題は、アンダースコアと文字を print ステートメントの正しい位置に配置する方法がわからないことです。どうすればいいですか?また、絞首刑執行人をどのように描くのですか?さらに明確にする必要がある場合は、質問してください。ありがとう。

PSは、無効なものを気にしません。これは、単語を選択するために入力された数字が有効かどうかを確認するためのものです。今のところ、私はそうであると仮定しています。

4

1 に答える 1

1

アンダースコアについては、おそらくセット内で、すでに推測された文字を思い出すことができます。

それからあなたはすることができます

print(" ".join(letter if letter in found else '_' for letter in word))

そして、絞首刑執行人を描く方法は?私はそれを関数に入れます:

def draw_man(level):
    parts=['------------', '| |', '| O', '| / |', '| |', '| / |', '|', '|']
    for line in parts[:level]:
        print(line)
    return level <= len(parts) # This return value indicates if we have reached the limit (lost) or not (yet).
于 2013-10-23T07:03:15.220 に答える