Python 反向游戏巨蟒

Python 反向游戏巨蟒,python,python-3.x,Python,Python 3.x,你好,我知道这个问题已经问过好几次了,但是我找不到答案。 问题是关于反向猜我的数字游戏。 代码执行程序,但不是以“类人”的方式执行。如果数字是50,它猜测20,它的响应就更高,例如,计算机说30,它得到的响应就更低,它猜测15。我如何解决这个问题? 本练习来源于:Python for The absolute初学者。 有人能帮我吗?请用一种简单的方式,否则我会跳过书中的内容。 我想你可以看到我知道的和不知道的代码。 请帮帮我 代码: 猜我的号码 # #计算机选择一个介于1和100之间的随机数 #

你好,我知道这个问题已经问过好几次了,但是我找不到答案。 问题是关于反向猜我的数字游戏。 代码执行程序,但不是以“类人”的方式执行。如果数字是50,它猜测20,它的响应就更高,例如,计算机说30,它得到的响应就更低,它猜测15。我如何解决这个问题? 本练习来源于:Python for The absolute初学者。 有人能帮我吗?请用一种简单的方式,否则我会跳过书中的内容。 我想你可以看到我知道的和不知道的代码。 请帮帮我

代码:

猜我的号码 # #计算机选择一个介于1和100之间的随机数 #剧组试着猜它,电脑让它 #玩家知道猜测是否过高或过低 #或者就在钱上 打印(“\t///”) 打印(“\tWelcome to‘猜我的号码’!”) 打印(“\t计算机与人”) 打印(“\t///”) name=输入(“你叫什么名字?”) 打印(“你好”,姓名) 打印(“\nOkay,想象一个介于1和100之间的数字。”) 打印(“我试着在10分钟内猜出来。”) 随机输入 #设置初始值 _number=int(输入(“请键入要猜测的数字:”) 尝试=0 最大值=10 guess=random.randint(1100) #猜测循环 猜猜看!=_次数和尝试次数<最大尝试次数: 打印(“是吗”,猜猜看“?”) 尝试次数+=1 如果猜测>次数和尝试次数<最大尝试次数: 打印(“较低”) guess=random.randint(1,guess) elif guess<次数和尝试次数<最大尝试次数: 打印(“它更高”) guess=random.randint(guess,100) elif guess==次数和尝试次数<最大尝试次数: 打印(“呜呼,你猜对了!”) 打破 其他: 打印(“哈哈,你这台愚蠢的电脑”,你的号码,!”) 输入(“\n\n要退出,请按enter键。”)
阅读应该会为您指出正确的方向。

您需要跟踪最高可能值和最低可能值,以便您能够智能地猜测

最初,最低可能值为1,最高可能值为100。 假设你猜50,电脑的反应是“更高”。你的两个变量会发生什么变化?最低可能值现在变为50,因为数字不能小于50。最高值保持不变

如果计算机响应“较低”,则情况正好相反

然后,您将在最低和最高可能值之间进行猜测:

random.randint(最低、最高)


而且你的猜测也会像预期的那样有效。

通常,这些游戏的工作原理是每次做出新的猜测时,使可能的数字范围变小。i、 e

1st guess = 20
guess is too low 
--> range of guesses is now (21, 100)

2nd guess = 45
guess is too high
--> range of guesses is now (21, 44)
etc...
在测试中,您忘记了之前所有的猜测,因此它无法做到这一点。您可以尝试跟踪范围的低端和高端:

lower_range, higher_range = 1, 100
max_tries = 10

#guessing loop
while tries < max_tries:
    guess = random.randint(lower_range, higher_range)
    print("Is it", guess,"?")
    tries += 1

    if guess > the_number:    
        print ("It's lower")
        higher_range = guess - 1

    elif guess < the_number:
        print ("It's higher")
        lower_range = guess + 1

    else:    # i.e. correct guess
        print("Woohoo, you guessed it!")
        input ("\n\nTo exit, press enter key.")
        sys.exit(0)

print("HAHA you silly computer it was", the_number,"!")
lower_range,higher_range=1100
最大值=10
#猜测循环
当尝试_编号:
打印(“较低”)
更高的范围=猜测-1
elif guess<_编号:
打印(“它更高”)
下限=猜测+1
否则:#即正确猜测
打印(“呜呼,你猜对了!”)
输入(“\n\n要退出,请按enter键。”)
系统出口(0)
打印(“哈哈,你这台愚蠢的电脑”,你的号码,!”)
也稍微整理了一下while循环


通常,这些游戏也利用二进制搜索方法。为了好玩,您可以尝试实现以下内容:)希望这有帮助

谢谢,但是我应该把它放在代码中的什么地方呢?在
import random
之后声明两个变量
lower
highest
。在“lower”和“higher”if语句中,都需要重新调整变量的值。任何时候你猜你都会使用
guess=random.randint(最低,最高)
Hi-thanx-nick。在idle中,您的设置对我来说并不起作用(在debianlinux上使用python3.1实现idle),但我在代码中添加了较高的_范围=guess-1和较低的_范围,一切都正常工作。阿洛特
lower_range, higher_range = 1, 100
max_tries = 10

#guessing loop
while tries < max_tries:
    guess = random.randint(lower_range, higher_range)
    print("Is it", guess,"?")
    tries += 1

    if guess > the_number:    
        print ("It's lower")
        higher_range = guess - 1

    elif guess < the_number:
        print ("It's higher")
        lower_range = guess + 1

    else:    # i.e. correct guess
        print("Woohoo, you guessed it!")
        input ("\n\nTo exit, press enter key.")
        sys.exit(0)

print("HAHA you silly computer it was", the_number,"!")