我正在做一个数字猜谜游戏,有人可以告诉我为什么它不能正常工作吗?
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")
答案 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;))。