2017-02-19 62 views
0

我正在学习Python的介绍,并遇到了一个问题。猜猜数字游戏给出的答案太快

请看看我的脚本:

import random 
secretNumber = random.randint(1,20) 
print (' I am thinking of a number between 1 and 20.') 

#ask the player to guess 6 times. 
for guessesTaken in range (1,7): 
    print ('take a guess.') 
    guess = int(input()) 

    if guess < secretNumber: 
     print ('your guess is too low') 
    elif guess > secretNumber: 
     print ('your guess is too high') 
    else: 
     break 

    if guess == secretNumber: 
     print ('good job! you guessed my number in ' + str(guessesTaken) + ' guesses!') 
    else: 
     print ('nope. the number i was thinking of was ' + str(secretNumber)) 

我试图做的猜测非数字游戏。当我运行该脚本,它问我:

  1. 猜数字

  2. 当我在数字输入,它会自动给我它存储的,而不是给我6次尝试我的号码。

如果我在任何步骤都不清楚,请告诉我,下次我会尽全力回答更清晰的问题!

回答

0

if guess == secretNumber:开头的最后一部分是循环的一部分,但您不希望在循环中给出最终结果。相反,把它在循环后(外的话),这意味着你应该减少这4行代码的缩进:

import random 
secretNumber = random.randint(1,20) 
print (' I am thinking of a number between 1 and 20.') 

#ask the player to guess 6 times. 
for guessesTaken in range (1,7): 
    print ('take a guess.') 
    guess = int(input()) 

    if guess < secretNumber: 
     print ('your guess is too low') 
    elif guess > secretNumber: 
     print ('your guess is too high') 
    else: 
     break 

if guess == secretNumber: 
    print ('good job! you guessed my number in ' + str(guessesTaken) + ' guesses!') 
else: 
    print ('nope. the number i was thinking of was ' + str(secretNumber)) 
+0

嗨trincot!首先,感谢你的空间。正在进行更改,当我点击提交时,它说你已经完成了!谢谢,我明白这是如何工作的。其次,我像你说的那样把它拿出来,它起作用了!没有注意到。非常感谢! – user3003923

+0

不客气:-) – trincot

0

最简单的解决方法是,上面已经为说明,只需将最后的if语句跳出循环。你使用的语法(除了那个错误的缩进)非常好,这是python的一个很好的开始。然而,在python 3中,你不需要在循环内部的if语句中使用其他语言。从根本上说,因为如果满足ELSE条件,你不需要做任何事情,你可以把它拿出来。

+0

我新来堆栈溢出,所以即时通讯只是尽量回答尽可能多的问题。对重复抱歉! – 2017-02-19 18:19:07