"能有人告诉我为什么这不会循环吗?"

2024-04-26 05:34:32 发布

您现在位置: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")

Tags: importyou游戏numberinputtimecount数字
2条回答

您需要接受循环中的输入。移动行b=int(输入(“你猜什么数字?”)在循环中。你知道吗

这不能正常工作的原因是,您在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所指出的,用户实际上永远不会看到“youwin”,因为您的if-elif-else语句结构不正确。else根据定义不能有一个条件-它存在于同一块中的所有其他条件之外。另外,else语句与while条件相反。当else变为真时,循环退出。你需要在别的地方打印“你赢了”。你知道吗

其次,您没有以任何方式验证用户的输入-如果他们输入“a”,程序将崩溃,因为您无法将“a”强制转换为int。请添加异常处理程序(对于ValueError)或对字符串使用isdigit(),然后强制转换它。你知道吗

第三,您没有正确使用time.time()——您需要从用户开始的时间中减去用户获胜的时间,然后以某种有意义的方式表示该值(以秒为单位)。从目前的情况来看,您是在告诉每个玩家,从UNIX时代开始,他们用了多少秒来完成游戏。你知道吗

此外,出于可用性的考虑,您可能应该为用户提供一些方法来中断—一个类似“QUIT”的字符串—因为从目前的情况来看,重新启动/退出的唯一方法是关闭应用程序或KeyboardInterrupt。你知道吗

相关问题 更多 >