2016-03-28 95 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