Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复while循环中不更新的变量(python)_Python_Variables_While Loop - Fatal编程技术网

如何修复while循环中不更新的变量(python)

如何修复while循环中不更新的变量(python),python,variables,while-loop,Python,Variables,While Loop,我正在制作一个程序,通过告诉程序数字是高还是低来猜测你正在思考的数字。我没有得到错误,但我似乎无法更新while循环中的变量guess,它仍然等于50。高-低的公式是教科书上给出的,所以我不能改变 我已经尝试将变量移动到while循环中,但仍然没有更新 print('Hello.') print('Pick a secret number between 0 and 100.') low = 0 high = 101 guess = 50 while True: print('Is yo

我正在制作一个程序,通过告诉程序数字是高还是低来猜测你正在思考的数字。我没有得到错误,但我似乎无法更新while循环中的变量guess,它仍然等于50。高-低的公式是教科书上给出的,所以我不能改变

我已经尝试将变量移动到while循环中,但仍然没有更新

print('Hello.')
print('Pick a secret number between 0 and 100.')
low = 0
high = 101
guess = 50
while True:
    print('Is your secret number',guess)
    use = input('Enter yes/higher/lower:\n').lower()
    if use == 'yes':
        print('Great!')
        break
    elif use == 'higher':
        low = guess
        guess = (guess-low)//2+low
    elif use == 'lower':
        high = guess
        guess = (high-guess)//2+guess
    else:
        print('I did not understand.')

你的问题似乎是变量“价值再分配”我不确定这个词我是法国人,等于:

=

你必须使用

猜测+=值

猜=猜+猜


你的问题似乎是变量“价值再分配”我不确定这个词我是法国人,等于:

=

你必须使用

猜测+=值

猜=猜+猜


那是因为你用的逻辑是错误的

现在发生的事情是

low = guess
guess = (guess - low) // 2 + low
As low=猜测上述陈述相当于

guess = (guess - guess) // 2 + low
# guess = 0 + low
# guess = low
guess = (high - high) // 2 + guess
# guess = 0 + guess
# guess = guess
同样,对于高,

high = guess
guess = (high - guess) //2 + guess
As high=猜测上述陈述相当于

guess = (guess - guess) // 2 + low
# guess = 0 + low
# guess = low
guess = (high - high) // 2 + guess
# guess = 0 + guess
# guess = guess
这就是为什么它总是停留在50

它工作的实际逻辑如下:

elif use == 'higher':
    low = guess
    guess = (guess + high) // 2
elif use == 'lower':
    high = guess
    guess = (guess + low) // 2
将代码段更改为此。它会成功的


希望这有帮助!:

那是因为你使用的逻辑是错误的

现在发生的事情是

low = guess
guess = (guess - low) // 2 + low
As low=猜测上述陈述相当于

guess = (guess - guess) // 2 + low
# guess = 0 + low
# guess = low
guess = (high - high) // 2 + guess
# guess = 0 + guess
# guess = guess
同样,对于高,

high = guess
guess = (high - guess) //2 + guess
As high=猜测上述陈述相当于

guess = (guess - guess) // 2 + low
# guess = 0 + low
# guess = low
guess = (high - high) // 2 + guess
# guess = 0 + guess
# guess = guess
这就是为什么它总是停留在50

它工作的实际逻辑如下:

elif use == 'higher':
    low = guess
    guess = (guess + high) // 2
elif use == 'lower':
    high = guess
    guess = (guess + low) // 2
将代码段更改为此。它会成功的


希望这有帮助!:

这很奇怪,因为你的配方有问题

    elif use == 'higher':
        low = guess
        guess = (guess-low)//2+low
    elif use == 'lower':
        high = guess
        guess = (high-guess)//2+guess
在这一部分中,由于low==high==guess,因此guess-low和high-guess的结果总是0。除以2也得到0。因此,这两条线都相当于guess=guess

这是因为你正在重新分配到低和高,我相信你的意思是保持猜测范围的下限和上限


也许你的意思是猜+=高猜//2和猜-=低猜//2?

这很奇怪,因为你的公式有问题

    elif use == 'higher':
        low = guess
        guess = (guess-low)//2+low
    elif use == 'lower':
        high = guess
        guess = (high-guess)//2+guess
在这一部分中,由于low==high==guess,因此guess-low和high-guess的结果总是0。除以2也得到0。因此,这两条线都相当于guess=guess

这是因为你正在重新分配到低和高,我相信你的意思是保持猜测范围的下限和上限

也许您的意思是guess+=高-猜//2和guess-=低-猜//2?

IIUC、低、高和猜需要为每个循环更新。你的新猜测应该是你的新低点和高点的平均值

事实上,你的猜测是一样的。例如,如果用户响应为“更高”,则猜测low为0。除以2仍然是0,然后再加上low,这就是猜测

您可能希望这样:

low = guess
guess = (high + low) // 2

需要为每个循环更新IIUC、low、high和guess。你的新猜测应该是你的新低点和高点的平均值

事实上,你的猜测是一样的。例如,如果用户响应为“更高”,则猜测low为0。除以2仍然是0,然后再加上low,这就是猜测

您可能希望这样:

low = guess
guess = (high + low) // 2