我写了一个游戏,玩家试图猜测一个随机数(见下面的代码)。还提供了诸如“太低......”和“太高......”等建议。但是如何扭转它并让计算机猜出玩家选择的数字呢?我有这个困难,我不知道为什么。我想我需要某人“推”而不是实际代码,因为我需要自己尝试。如果有人能帮助我,我将不胜感激。
以下是玩家必须猜测数字的代码(Python 3):
#Guess my Number - Exercise 3
#Limited to 5 guesses
import random
attempts = 1
secret_number = random.randint(1,100)
isCorrect = False
guess = int(input("Take a guess: "))
while secret_number != guess and attempts < 6:
if guess < secret_number:
print("Higher...")
elif guess > secret_number:
print("Lower...")
guess = int(input("Take a guess: "))
attempts += 1
if attempts == 6:
print("\nSorry you reached the maximum number of tries")
print("The secret number was ",secret_number)
else:
print("\nYou guessed it! The number was " ,secret_number)
print("You guessed it in ", attempts,"attempts")
input("\n\n Press the enter key to exit")
感谢您的帮助。
答案 0 :(得分:4)
在循环的每次迭代中,您需要一个新的random.randint(low,high)
。可以通过将计算机猜测收集到2个列表(low
)和(high
)中来计算low_list
和high_list
,这是基于用户在计算机告诉用户时的响应方式猜测。然后,您low
获得max(low_list)+1
,high
获得min(high_list)-1
。当然,您必须使用允许的最低和最高数字初始化low_list
和high_list
。
你可以保持“太高”猜测中的最低点和“太低”猜测中最高的而不是列表。它的效率会略高一些,编码的工作量也可能相同,但是你无法回头看看计算机的乐趣猜测:)。
答案 1 :(得分:1)
您从允许的最小数量到允许的最大数量之间的范围开始,因为未知数字可能在该范围内的任何位置。
在每一步中,您需要选择要查询的数字,因此将空格分成两个块;那些错误的查询号码将被删除。在最少数量的查询中执行此操作的最有效方法是每次将空间平分。
我建议你将游戏限制为整数,否则你最终会遇到关于容差和精度的浮点值等等。
答案 2 :(得分:1)
假设你知道它的数字范围是(a,b)。
考虑如何缩小范围。你可以从中间猜测开始。如果你的猜测很低,你会猜到你的最后一次猜测和最高值。如果它很高,你会猜到最低可能值和最后一次猜测。通过迭代缩小范围,最终你会找到数字。
这里有一些伪代码:
loop{
guess = (a+b)/2
if high:
b = guess - 1
else if low:
a = guess + 1
else:
guess = answer
}
答案 3 :(得分:0)
我只是用另一个人做过,使用while循环并使用print(“ <,>,=”),然后执行if语句。您需要一个最高点,中点和最低点,并且要获得中间点,您需要执行midpoint =((highpoint = lowpoint)// 2),并且在if语句中您必须更改最高点和最低点。