我正在做一个数字猜谜游戏,有人能告诉我为什么它不能正常工作吗?你知道吗
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")
您需要接受循环中的输入。移动行b=int(输入(“你猜什么数字?”)在循环中。你知道吗
这不能正常工作的原因是,您在while循环之外调用了
b = input
。就目前的情况而言,用户只会被问一次他们的猜测是什么,然后循环就会无限地移动,因为b
永远不会被修改。你知道吗此循环将实现更多您想要的功能:
不过,有几点需要注意:
首先,正如Lee-Daniel-Crocker所指出的,用户实际上永远不会看到“youwin”,因为您的
if-elif-else
语句结构不正确。else
根据定义不能有一个条件-它存在于同一块中的所有其他条件之外。另外,else语句与while
条件相反。当else
变为真时,循环退出。你需要在别的地方打印“你赢了”。你知道吗其次,您没有以任何方式验证用户的输入-如果他们输入“a”,程序将崩溃,因为您无法将“a”强制转换为int。请添加异常处理程序(对于
ValueError
)或对字符串使用isdigit()
,然后强制转换它。你知道吗第三,您没有正确使用
time.time()
——您需要从用户开始的时间中减去用户获胜的时间,然后以某种有意义的方式表示该值(以秒为单位)。从目前的情况来看,您是在告诉每个玩家,从UNIX时代开始,他们用了多少秒来完成游戏。你知道吗此外,出于可用性的考虑,您可能应该为用户提供一些方法来中断—一个类似“QUIT”的字符串—因为从目前的情况来看,重新启动/退出的唯一方法是关闭应用程序或
KeyboardInterrupt
。你知道吗相关问题 更多 >
编程相关推荐