问题描述
这是我原始代码的最小表示
x = 0
count = 0
a=30-count
while x < 10:
if True:
count = count+1
x = x+1
print("count is ",count)
print("a is ",a)
这是输出:
count is 10
a is 30
输出中的 a 应该是 20,但“a=30-count”行不起作用
为了使它工作,我必须将行 'a=30-count' 移动到 'print("a is ",a)' 正上方 但我想要代码开头的行 'a=30-count'
我尝试将 a 设置为全局变量,但没有用
如果我的问题格式不正确,也预先感谢您,这是我第一次在本网站上发布问题
解决方法
Python 是一种过程命令式编程语言,代码从上到下运行。当您将 a=30-count
放在代码的开头时,python 会将 count = 0 替换为该行代码,从而将其解释为 a = 30 - 0
。所以,它打印 30。
尝试将 print("a is ",a)
移至 a=30-count
正下方的行,您将看到 a 为 30。
您已经知道使其正常工作的正确方法,即将 a=30-count
移动到 print("a is ",a)
上方,因为这样 python 就会在那里重放 count = 10。
a=30-count
仅在您最初调用时调用一次。要纠正此问题,您应该在 while 循环结束时调用它。
x = 0
count = 0
while x < 10:
if True:
count = count+1
x = x+1
a=30-count
这给你
count is 10
a is 20
还有
if True:
是多余的,因为您的 while 循环本质上是在说 while x
,Python 会将 count
解释为 0 并且 a
= 30-0 因此得到答案。然后它将继续while loop
。
您必须在 a=30-count
之后移动 while loop
行。
x = 0
count = 0
while x < 10:
count +=1
x = x+1
a=30-count
print("count is",count)
print("a is",a)
,
这不起作用,因为您在更改计数值之前声明了 a 的值, 所以 a 的值是: 30 - 0 这只不过是 30。
运行WHILE循环后,count的值变为10,但是a的值没有更新,因为之前已经声明为(30-0)了。
变量 a 不会在 count 的值每次更改时都保持更新,这就是您必须再次更新它的值的原因。
代码如下:
count = 0
a = 30
for x in range(10):
count += 1
a -= count
print("count is ",count)
print("a is ",a)
输出应如下所示:
count is 10
a is 20
,
x = 0
count = 0
a=30-count
while x < 10:
if True:
count = count+1
x = x+1
print("count is ",a)
相当于
x = 0
count = 0
a=30-count
while x < 10:
count = count + 1
x = x + 1
print("count is ",a)
讨论问题,python从上到下计算代码形式。因此,当您设置 a = 30-count 时,count 的值为 0,因此 'a' 的值为 30。正如您所说,解决此问题的最重要方法是在打印语句之前放置一行 要么 创建一个函数
def updateA():
global a
a = 30 - count
并在打印语句之前调用函数 updateA()。 我希望这会奏效
,当您编写 a = 30 - count
时,它不会“绑定”变量 a
到变量 count
。它只是使用 a
的当前值计算 count
的值。
如果你想“保存”表达式 30 - count
以便以后重新计算,你可以把它放在一个函数中:
def a(count):
return 30 - count
x = 0
count = 0
while x < 10:
count = count+1
x = x+1
print("count is ",a(count))
# count is 10
# a is 20