python反向猜测游戏不同的打印消息

时间:2017-05-18 01:27:16

标签: python

当我尝试打印不同的消息因为有多个猜测时,我会得到双打印消息,以便在一次迭代中猜到它。

if guess >= 2:
    print ('Your number is %d. I found it in %d guesses.' % (guess, iteration))
if iteration == 1:
    print ('I found your number in 1 guess.')
  

当前输出:       输入两个数字,低至高。       低= 2       高= 8

Think of a number in the range 2 to 8.

Is your number Less than, Greater than, or Equal to 4?
Type 'L', 'G', or 'E'): e

Your number is 4. I found it in 1 guesses.
I found your number in 1 guess.

2 个答案:

答案 0 :(得分:0)

你没有在这一行的第一次循环迭代中定义什么是“min_no”和“max_no”:

guess = guess_number(min_no, max_no)

最后一个是比较“猜测”数而不是“迭代”计数器:

if guess == 1:
print ('I found your number in 1 guess.')

答案 1 :(得分:0)

  
      
  1. 我无法弄清楚如何让程序打印一个不同的消息,让程序猜测1个猜测中的数字,而不是猜测它。
  2.   

您正在检查错误的值。改变这个:

if guess == 1:

为:

if iteration == 1:
  
      
  1. 当用户未能正确响应小于/大于提示时,我需要程序给我一条关于输入不一致的消息。
  2.   

您使用else的情况永远不会成为现实,因为hint.lower()已经是一个有效的字母,并且您已经检查了所有可能的值。添加else是徒劳的,而不是你需要的。 min_no变得大于max_no时会检测到不一致。所以改变:

else:
    raise ValueError('Your answers have not been consistent.')

到此:

if min_no > max_no:
    raise ValueError('Your answers have not been consistent.')

其他改进

要获得两个整数之间的随机整数(包括两者作为可能的结果),请不要使用randrange,而应使用randint。否则,将永远不会选择第二个值。

即使用户回答了LG,您的代码有时会生成与之前猜测相同的数字。这是因为您在新的可能值范围内保持猜测。所以改变:

max_no = guess

到此:

max_no = guess - 1

还有:

min_no = guess

到此:

min_no = guess + 1