当我尝试打印不同的消息因为有多个猜测时,我会得到双打印消息,以便在一次迭代中猜到它。
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.
答案 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个猜测中的数字,而不是猜测它。
醇>
您正在检查错误的值。改变这个:
if guess == 1:
为:
if iteration == 1:
- 当用户未能正确响应小于/大于提示时,我需要程序给我一条关于输入不一致的消息。
醇>
您使用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
。否则,将永远不会选择第二个值。
即使用户回答了L
或G
,您的代码有时会生成与之前猜测相同的数字。这是因为您在新的可能值范围内保持猜测。所以改变:
max_no = guess
到此:
max_no = guess - 1
还有:
min_no = guess
到此:
min_no = guess + 1