【发布时间】:2019-03-19 16:48:19
【问题描述】:
在这个程序中,你想到数字,计算机猜测。在游戏开始之前,计算机会询问它猜到了多少。如果计算机输了,它会询问正确答案是什么。它还会检查以确保答案是合法的,如果不合法,就会指出它。如果用户给出的答案不一致,计算机会指出并停止播放。
我的问题是,当我运行程序时,如果我说“更高”或“更低”,当计算机询问我的数字是否更高/更低/与某个数字相同时,比如 50,我稍后可以说我的数字是50 它告诉我我赢了,而不是说“那不可能;你说它高于/低于 50!”我该如何解决这个问题?
print("Think of a number between 1 and 100 and I'll guess it.")
total = int(input("How many guesses do I get? "))
h = "higher"
l = "lower"
s = "same"
low = 0
high = 100
hls = ""
guess_count = 0
average = 0
while guess_count < total and hls != s:
average = (high + low) // 2
hls = input("Is the number higher, lower, or the same as " + str(average) + "? ")
if hls == h:
low = average
elif hls == l:
high = average
guess_count += 1
if high - low == 1:
break
if high - low == 1:
print("Wait; how can it be both higher than " + str(low) + " and lower than " + str(high) + "?")
elif hls == s:
print("I won!")
else:
answer = int(input("I lost; what was the answer? "))
if answer < low:
print("That can't be; you said it was higher than " + str(low) + "!")
elif answer > high:
print("That can't be; you said it was lower than " + str(high) + "!")
elif answer != average:
print("Well played!")
【问题讨论】:
-
这类问题应该在Code Review上。反正我没看懂这个问题:如果你输入50,你应该在第一个问题回答
same,程序获胜。附带说明一下,如果用户在猜测阶段提供了意外输入,您仍然将 1 添加到guess_count
标签: python if-statement while-loop