谁能告诉我为什么这不会循环?

时间:2014-11-18 18:45:53

标签: python

我正在做一个数字猜谜游戏,有人可以告诉我为什么它不能正常工作吗?

import random
import time
time.time()
count=0
a = random.randint(0,100)
b = int(input("What number will you guess?"))
while b != a:
    if b > a:
        print("TOO BIG")
        count = count + 1
    elif b < a:
        print("TOO SMALL")
        count = count + 1
    else b == a:
            print("YOU WIN")
            count = count + 1
time=time.time()
print("You took",count,"tries")
print("It took you",time,"second")

2 个答案:

答案 0 :(得分:3)

这种方式无法正常工作的原因是因为您在while循环之外调用了b = input。就目前而言,用户将被问到一次他们的猜测是什么,然后循环将无限移动,因为永远不会修改b

这个循环将完成你想要的更多:

a = random.randint(0,100)
b = -1
while b != a:
    b = int(input("What number will you guess?"))

但有几点说明:

首先,正如Lee Daniel Crocker指出的那样,用户实际上永远不会看到“你赢”,因为你错误地构造了if-elif-else语句。根据定义,else不能有条件 - 它完全存在于同一块中的所有其他条件中。此外,您的else语句与您的while条件相反。当else变为真时,循环退出。你需要在其他地方处理打印“你赢”。

其次,你没有以任何方式验证用户的输入 - 如果他们输入'a',程序将崩溃,因为你不能将'a'强制转换为int。在字符串上添加异常处理程序(对于ValueError)或使用isdigit(),然后将其强制转换。

第三,你没有正确使用time.time() - 你需要从他们开始的时间中减去用户获胜的时间,然后以某种有意义的方式表示该值,以秒为单位。就目前而言,你告诉每个玩家他们花了自UNIX时代开始以来完成游戏的秒数。

另外,出于可用性的原因,你可能应该为用户提供一些突破的方法 - 像“QUIT”这样的字符串 - 因为就目前而言,重启/退出的唯一方法是关闭应用程序或{{1 }}

答案 1 :(得分:0)

您需要接受循环中的输入。在循环中移动线b = int(输入(&#34;你猜的是什么数字?&#34;))。