我正在尝试创建一个游戏,让我想到一个数字。然后计算机通过我猜出这个数字,告诉它猜的是太低还是太高。
这是我想出的,但是我很迷茫。
maxguess = 100
minguess = 1
count = 0
print("Think of a number between {} and {}".format(minguess,maxguess))
def midpoint(maxguess, minguess) :
z = ((maxguess + minguess)/2)
def guessing(x) :
print("Is you number greater (>) , equal (=) ,or less (<) than" ,z,)
print("please answer <,=, or >! >")
x = input()
if x == (">") :
minpoint = z
count += 1
continue
elif x == ("<") :
maxpoint = z
count += 1
continue
elif x == ("=") :
print ("I have guessed it!")
count += 1
break
print("I needed {} steps!".format(count))
答案 0 :(得分:3)
目的不是一个完整的解决方案,但是给您一些提示:
我建议避免使用诸如count
,maxguess
和minguess
之类的全局变量。而是创建一个包含所有这些变量的函数。
将midpoint
函数更改为返回z,然后在guessing
函数内部调用它。
您的continue
和break
函数需要位于for
或while
循环内。由于您不确定需要猜测多少次迭代,因此我认为while
循环在这里很有意义
答案 1 :(得分:2)
您的函数永远不会运行。在风格上,将所有“主要”语句放到最底端,以便它们在一起。在提示您想到数字之后,您需要调用guessing()函数。调用它时,应将minguess和maxguess值传递给它。
我可以看到您正在尝试使用if ... elif语句,但是它们需要放在 while True:块中。因此,前面的三个语句也应该如此,以便脚本反复向您寻求新的建议。
要么将midpoint()函数的内容带入guessing(),要么使其返回z的值。
您还向用户提供了'> 1'的选择,但不处理它-据我所知,您不需要它。
您从不使用minpoint或maxpoint-不需要它们。而是调用中点函数并将其传递给适当的值,例如,如果'>',则z =中点(z,maxguess)。
此外,您将花费大量时间尝试在使用浮点数时对其进行猜测。确保所有内容都是整数。
最后,您应该添加一些代码来管理不需要的输入,即不是'<','>'或'='。
祝你好运!
答案 2 :(得分:0)
minguess=1
maxguess=100
z=50
count=0
print("Think of a number between 1 and 100")
condition = True
while condition:
z=((maxguess + minguess)//2)
print("Is your number greater (>) , equal (=) ,or less (<) than" ,z,)
print("Please answer <,=, or >! >")
x = input()
if x == (">"):
minguess=z
count += 1
elif x == ("<") :
maxguess=z
count += 1
elif x == ("=") :
print ("I have guessed it!")
count += 1
condition=False