2016-03-28 47 views
-1

stackflow新增,我希望我的問題可以幫助其他python新手。初學者:用elif控制流和語法錯誤

我試圖創建一個執行程序如下:1。 == secret_num產生1-10
2之間的隨機#詢問用戶猜測1-10 3之間用這個號碼,如果猜測= = secret_num向他們表示祝賀,並提供 4.帳戶重複猜測 5.讓他們知道,如果猜測是太高或太低

我知道這是ABC的東西爲它花了猜測number_guesses的數量(減去任何重複的猜測)很多人,但我有語法,縮進和控制流程的典型新程序員問題。現在我得到了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

的上面兩行需要縮進。 – 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

沒有評論與此無關,它取決於你的風格。這是因爲這兩行需要縮進 - 在elif之前,你不能擁有以外的東西;縮進這行'already_guesses.append(guess)'和這個'number_guesses + = 1'(把它們都移到裏面,如果,在'print(「你已經...」)下面對齊)) – Bahrom