2016-08-11 11 views
1

私は推測ゲームを作成しています。私は2つの関数を作成しました。 1つはユーザの入力を受け取り、もう1つはユーザの入力が正しいかどうかをチェックする。戻り値が定義されていません

def getGuess(maxNum): 
    if maxNum == "10": 
     count=0 
     guess = -1 
     guessnum = [ ] 
     while guess >10 or guess<0: 
      try: 
       guess=int(input("Guess?")) 
      except: 
       print("Please enter valid input") 
     guesses.append(guess) 
     return guesses 
     return guess 

def checkGuess(maxNum): 
    if maxNum == "10": 
     if guess>num1: 
      print("Too High") 
     elif guess<num1: 
      print ("Too Low") 
     else: 
      print("Correct") 
      print (guesses) 

と主なコードの機能は、ユーザーが、私は推測を定義しない場合、コードは常に11として推測を取ると思い、それはどちらか動作しません返しますが

if choice == "1": 
    count = 0 
    print("You have selected Easy as the level of difficulty") 
    maxNum= 10 
    num1=random.randint(0,10) 
    print (num1) 
    guess = 11 
    while guess != num1: 
     getGuess("10") 
     checkGuess("10") 
     count = count+1 
    print (guess) 

です。助けてください。

答えて

0

まず、2つの値を返します。 returnステートメントもbreakとして機能し、2番目のreturnは呼び出されません。また、返された値はどこにも格納されていないため、消えてしまいます。

def getGuess(maxNum): 
    if maxNum == "10": 
     guess = -1 
     while guess >10 or guess<0: 
      try: 
       guess=int(input("Guess?")) 
      except: 
       print("Please enter valid input") 
     return guess 

def checkGuess(maxNum, guess, num1): 
    if maxNum == "10": 
     if guess>num1: 
      print("Too High") 
     elif guess<num1: 
      print ("Too Low") 
     else: 
      print("Correct") 
      return True 
     return False 

if choice == "1": 
    count = 0 
    print("You have selected Easy as the level of difficulty") 
    maxNum= 10 
    num1=random.randint(0,10) 
    print (num1) 
    guess = 11 
    guesses = [] 
    while guess != num1: 
     guess = getGuess("10") 
     guesses.append(guess) 
     hasWon = checkGuess("10", guess, num1) 
     if hasWon: 
      print(guesses) 
      break 
     count = count+1 

You have selected Easy as the level of difficulty 
2 
Guess?5 
Too High 
Guess?1 
Too Low 
Guess?2 
Correct 
[5, 1, 2] 
>>> 
+0

本当にありがとうございました。私はリターンが休憩としてもそれを残念に思っていましたが、以下のコードが何をしているか簡単に教えてください。 ifWon: print(guesses) break count = count + 1 –

+0

これで勝ったら、すべての推測を出力してから、whileループを終了して入力を求めないようにします。 'count = count +'は 'if'文の後ろにあるので、勝っていなければ、' count'に1を加えます。これは、推測の数です。 –

+0

こんにちは、どのようにhasWon = checkGuess( "10"、推測、num1)このステートメントは、ユーザーが獲得したかどうかを確認するステートメントになりました。推測をチェックするために使用される関数(それが正しいかどうか)だけではありませんか?どうもありがとうございます。遅いコメントには申し訳ありません。 –

0

あなたは私が "タイプと希望" と呼ぶプログラミングスタイルを持っている:ここでは

編集したコードです。 maxNumは数字と文字列の間でバウンスしているように見えます。以下は、各ルーチンが余分な変数なしで明白で有用な何かをしようとする再作業です。 (私はそれはあなたの選択の枠組みに入れることができ、この例に寄与しないように、初期choiceロジックオフ残してきた。)

import random 

def getGuess(maxNum): 
    guess = -1 

    while guess < 1 or guess > maxNum: 
     try: 
      guess = int(input("Guess? ")) 
     except ValueError: 
      print("Please enter valid input") 

    return guess 

def checkGuess(guess, number): 
    if guess > number: 
     print("Too High") 
    elif guess < number: 
     print("Too Low") 
    else: 
     print("Correct") 
     return True 

    return False 

print("You have selected Easy as the level of difficulty") 

maxNum = 10 

maxTries = 3 

number = random.randint(1, maxNum) 

count = 1 

guess = getGuess(maxNum) 

while True: 
    if checkGuess(guess, number): 
     break 

    count = count + 1 

    if count > maxTries: 
     print("Too many guesses, it was:", number) 
     break 

    guess = getGuess(maxNum) 

特定の物事のカップルは、検討する:いくつかの意味なしexceptの使用を避けますあなたが予期している例外のどれか。文字列として数値を渡すのを避ける - 数値文字列を入力時の数値に変換し、数値を数値文字列に変換しますが、その間に実際の数値を使用します。

+0

私は初心者であるため、私の知識が不足して申し訳なく思っていますが、数字と文字列の間でマックスナムがバウンスすることの意味について詳しく教えてください。あなたのご意見をありがとうございます。 –

+0

@RavinduGamage、あなたのコードを見て、 '' maxNum == "10": 'と' maxNum = 10'のようなコードを指していました。 – cdlane

関連する問題