创建一个游戏,计算机通过输入<,>或=猜出一个值

时间:2018-10-24 22:36:04

标签: python python-3.x

我正在尝试创建一个游戏,让我想到一个数字。然后计算机通过我猜出这个数字,告诉它猜的是太低还是太高。

这是我想出的,但是我很迷茫。

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))

3 个答案:

答案 0 :(得分:3)

目的不是一个完整的解决方案,但是给您一些提示:

我建议避免使用诸如countmaxguessminguess之类的全局变量。而是创建一个包含所有这些变量的函数。

midpoint函数更改为返回z,然后在guessing函数内部调用它。

您的continuebreak函数需要位于forwhile循环内。由于您不确定需要猜测多少次迭代,因此我认为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