2016-08-01 4 views
0
import random 

def random_Words(): 
    print("Lets play HANGMAN") 
    option = input("Please Chose option \n [1] Animals.\n [2] Countries \n  [3] Flowers \n [4] Pakistan's Cities \n"); 
    i=0; 
    x= ""; 
    if(option=='1'): 
     path= "code/hangman/Words.Animals" 

    if(option=='2'): 
     path="code/hangman/Words.Countries" 

    if(option=='3'):   
     path="code/hangman/Words.Flowers" 

    if(option=='4'): 
     path="code/hangman/Words.PakCities" 

    return random.choice(open(path).readlines()); 

def HangmanGuess(RandomWord, GuessedWord, Chances): 
    Letters_Guessed = [] 
    if(Chances > 0): 
     i=0; 
     GuessOption = input("Guess a Letter :"); 

     if(GuessOption == Letters_Guessed): 
      print("Already Guessed") 

     GuessOptionValid= False; 
     for i in range(len(RandomWord)-1): 
      if(RandomWord[i] == GuessOption): 
       GuessedWord= GuessedWord[:i] + GuessOption + GuessedWord[i+1:]; 
       GuessOptionValid =True; 

     print(RandomWord); 
     print(GuessedWord); 

     if(GuessOptionValid): 
      HangmanGuess(RandomWord,GuessedWord, Chances);   
     else: 
      HangmanGuess(RandomWord,GuessedWord, Chances-1); 
    else: 
     print('You have lost!!') 


Chances = 5 
RandomWord = random_Words() 
GuessedWord = '' 
i=0 
for i in range(len(RandomWord)-1): 
    GuessedWord+= '_' 

def Hangman_Drawing(RandomWord,GuessedWord, Chances): 
    x= HangmanGuess(RandomWord,GuessedWord, Chances); 
    x = '' 

    if(GuessedWord!= RandomWord[i]): 
     if(Chances==4): 
      print("----------"); 
      print("|  | "); 
      print("|   "); 
      print("|   "); 
      print("|   "); 
      print("|   "); 
      print("|   "); 
      print("-----------"); 


     if(Chances==3): 
      print("----------"); 
      print("|  | "); 
      print("|  O "); 
      print("|   "); 
      print("|   "); 
      print("|   "); 
      print("|   "); 
      print("-----------"); 


     if(Chances==2): 
      print("----------"); 
      print("|  | "); 
      print("|  O "); 
      print("|  | "); 
      print("|   "); 
      print("|   "); 
      print("|   "); 
      print("-----------"); 


     if(Chances==1): 
      print("----------"); 
      print("|  | "); 
      print("|  O "); 
      print("|  | "); 
      print("| /\ "); 
      print("|   "); 
      print("|   "); 
      print("-----------"); 


     if(Chances==0): 
      print("----------"); 
      print("|  | "); 
      print("|  O "); 
      print("|  --|-- "); 
      print("| /\ "); 
      print("|   "); 
      print("|   "); 
      print("-----------"); 


print(Hangman_Drawing(RandomWord,GuessedWord, Chances)); 

こんにちはみんな、 IAMが、私は手紙が「と推測」されたときに任意の文字が入力されている場合、それはかどうかをチェックすることを確認し、チェックを入れたい問題で立ち往生その文字が入力されたので、見つかった場合にはユーザに警告するためのメッセージが表示されます。 私のコードは「チェック」コードを持っていますが、何が欠落しているのかわからないのですか?完璧に良い。 申し訳ありません私は技術者ではないので、情報が不足している場合はご容赦ください 助けていただければ幸いです。おかげさまで ハングマン:推測し手紙を繰り返していない再び

+1

実際の質問とは関係ありませんが、Pythonの行末にはセミコロンは必要ありません。それらは*許可されています。そして、あなたは一つの行に複数のステートメントを結合させますが(通常は悪いスタイルですが)、決して必要はありません。 – Blckknght

答えて

0

同じ文字の繰り返し推測を扱うことができないように、コードにはいくつかの問題があります。

if(GuessOption == Letters_Guessed): 

==を使用することにより、あなたはGuessOptionLetters_Guessedリストに等しいことが必要としている:

最も明白な1を使用すると、ユーザーエントリがすでに推測されたかどうかを確認するためにやっているテストです。それは文字列になるので、それは決して真実ではありません。ここではinオペレータを使用したいと思います。左側のオブジェクトが右側のコンテナのメンバーであるかどうかをテストします。

if GuessOption in Letters_Guessed:  # parentheses are not necessary in Python conditionals 

しかし、実際に動作させるには不十分です。ローカル変数Letters_Guessedは空のリストとして初期化され、何も追加されません。そのため、メンバーシップテストは常にfalseになります。あなたは、推測されたそれぞれの文字をどこかのリストに追加する必要があります。

次の問題は大きなものです。これは、コードの制御フローをどのように整理しているかに関係しています。現在、最後のものが良いかどうかを判断した後、次の推測に移るために再帰を使用しています。しかし、これはLetters_Guessedの問題を引き起こします。なぜなら、それはローカル変数であり、各再帰呼び出しで再初期化されるからです。再帰を守りたい場合は、他の引数を渡すのと同じように、関数呼び出しの間にLetters_Guessedリストを渡す必要があります。私は本当にそれをお勧めしません。

あなたのコードの再帰構造をループで置き換える方が良い解決策があります。特に、whileループは多くの意味があります。あなたはそれぞれの推測の結果を扱う1つのwhileループを持つことができます(例えば、間違った推測でChancesを減らす)、そして入力をチェックして有効であることを確認する別のネストされたループ(例えば、すでに推測されていない、手紙と1文字のみです)。

+0

私は再帰関数を好むでしょう。とにかく貴重な時間をありがとう。 –

+0

btw私はこれのための解決策を見つけた。 –

関連する問題