如何修复while循环中不更新的变量(python)
我正在制作一个程序,通过告诉程序数字是高还是低来猜测你正在思考的数字。我没有得到错误,但我似乎无法更新while循环中的变量guess,它仍然等于50。高-低的公式是教科书上给出的,所以我不能改变 我已经尝试将变量移动到while循环中,但仍然没有更新如何修复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
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
及