2016-03-28 11 views
-1

新しいstackflowと私の質問が他のpython初心者に役立つことを願っています。初心者:elifで制御フローと構文エラー

私は次のことを実行するプログラムを作成しようとしています: 1. secret_num == 1-10
2の間のランダム#を生成する推測場合1-10 3との間で、この数を推測するようにユーザーに尋ねます= = secret_numは彼らを祝福し、それがかかった推測のnumber_guessesの数(マイナス重複推測)の重複のため 4.アカウントが 5.推測が高すぎる、または低である場合は、それらが

私は、これがために、ABCのものである知っている知っている推測を提供しますあなたの多くは、構文、字下げ、および制御の流れに関して、典型的な新しいプログラマーの問題を抱えています。今、私はelif guess == secret numの構文を取得しています。さもなければ私は人生を救うために重複を説明するためにこのコードを得ることができません。助けていただければ幸いです。ありがとうございました 。

import random 

def game(): 
# generate a random number between 1 -100 and initiate repeat guess list 
    secret_num=random.randint(1,10) 
# initiate duplicate list and number of guesses 
    already_guesses = [] 
    number_guesses = 0 

    while True: 
# ask for user guess 
     guess = int(input('Guess a number from 1-10> ')) 
# help with guesses and announce if it is correct number! 
# catch someone if they submit the same number 
     if guess in already_guesses: 
      print ("You already guessed that number, try again") 
     already_guesses.append(guess) 
     number_guesses += 1 
     elif guess == secret_num: 
      print("whooohoo! you guessed it, my number is {}".format(secret_num)) 
      print("It took you {} guesses".format(number_guesses - len([already_guesses]))) 
      break 
     elif guess < secret_num: 
      print("You\'re getting hot, try a higher number") 
     else: 
      guess > secret_num 
      print("You\'re cold, try a lower number") 
# ask if they want to play again 
    else: 
     play_again = input("Do you wanna play again? y/n") 
     if play_again != 'n': 
      game() 
     else: 
      print("Bah Bye!") 

game() 
+0

インデントする必要が上記の2行は。 – neil

答えて

0

あなたのコードといくつかの他の問題は、(コメントで述べたようにインデントした後)にもあります

import random 

def game(): 
    # Generate a random number between 1-100 and initiate repeat guess list 
    secret_num=random.randint(1,10) 
    # Initiate duplicate list 
    # Consider using a set instead so you don't have to cast it into a set later 
    already_guesses = [] 

    while True: 
    # Ask for user guess 
     guess = int(input('Guess a number from 1-10> ')) 
     # Help with guesses and announce if it is correct number! 
     # Catch someone if they submit the same number 
     if guess in already_guesses: 
      print ("You already guessed that number, try again") 
     elif guess == secret_num: 
      # Format your strings properly 
      print("whooohoo! you guessed it, my number is {0}".format(secret_num)) 
      # See how many unique guesses there were and add the correct guess to it (+1) 
      # To do so just use a set 
      print("It took you {0} guesses".format(
       len(set(already_guesses))+1 
      )) 
      break 
     elif guess < secret_num: 
      print("You\'re getting hot, try a higher number") 
     else: 
      guess > secret_num 
      print("You\'re cold, try a lower number") 
     # Make sure to append the guess to the already_guessed list in any case, not just if the number is in already_guesses 
     # If you only do that in your original if block, already_guesses will always remain empty 
     already_guesses.append(guess) 

    # Ask if they want to play again 
    play_again = input("Do you wanna play again? y/n") 
    if play_again != 'n': 
     game() 
    else: 
     print("Bah Bye!") 

game() 
+0

ありがとうBAH '#comments'は対応するコードで字下げする必要がありますか?現在、私は文法エラーメッセージを受け取っています。 "elif guess == secret_num line" コメントの字下げのようなものが条件文に影響しますか? とにかく試してみますか? – user3564925

+0

ええ、私はまだelifでその構文エラーを取得していますか? – user3564925

+0

コメントはこれと関係がなく、実際にあなたのスタイルに依存します。これらの2行はインデントされている必要があります - あなたはelifの前にifの外にあるものを持つことはできません。この行を 'already_guesses.append(推測)'とこの1行の 'num_guesses + = 1'(' print( "You ... already") 'の下に整列させれば、両方の中に移動します) – Bahrom

関連する問題