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