【问题标题】:Why is this simple subtraction code not working为什么这个简单的减法代码不起作用
【发布时间】:2021-08-14 16:52:24
【问题描述】:

这是我原始代码的最小表示

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 设置为全局变量,但没有成功

提前感谢您,如果我的问题格式不正确,我也很抱歉这是我第一次在此网站上发布问题

【问题讨论】:

  • 您的目标与因果关系相矛盾。也就是说,您无法从后来最早知道的值中接收结果。你唯一能做的就是引入一个变量loop_limit = 10,所以你可以做a = 30 - count - loop_limit
  • 那条线并没有在a 和那个公式之间建立一些永恒的联系。它只是从30(即30)中减去count0)的当前值,并将其分配给a。之后的任何时候都不会隐含地重复此计算。这是命令式代码;你告诉 Pythonwhen 做什么操作。如果你只是在一开始就这样做,那么结果就是你所看到的。
  • 我在终端中运行了这段代码,它运行良好。

标签: python variables math syntax subtraction


【解决方案1】:

Python 是一种过程式命令式编程语言,代码从上到下运行。当您将a=30-count 放在代码的开头时,python 会将其解释为a = 30 - 0,方法是将 count = 0 替换为该代码行。所以,它打印 30。

尝试将print("a is ",a) 移动到a=30-count 正下方的行,您会看到a 是30。

您已经知道使其工作的正确方法,即将a=30-count 移动到print("a is ", a) 上方,因为那时python 在那里重放count = 10。

【讨论】:

    【解决方案2】:
    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

    【讨论】:

      【解决方案3】:

      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)
      

      【讨论】:

        【解决方案4】:

        这不起作用,因为您在更改 count 的值之前声明了 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
        

        【讨论】:

          【解决方案5】:
          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) 
          

          等价于

          x = 0
          count = 0
          a=30-count
          
          while x < 10:
            count = count + 1
            x = x + 1
          print("count is ",count)
          print("a is ",a)
          

          讨论问题,python 从上到下评估代码形式。因此,当您设置 a = 30-count 时,count 的值为 0,因此“a”的值为 30。正如您所说,解决此问题的最重要方法是在 print 语句之前放置 line 要么 创建一个函数

          def updateA():
            global a
            a = 30 - count
          
          

          并在 print 语句之前调用函数 updateA()。 我希望这会奏效

          【讨论】:

            【解决方案6】:

            当您编写a = 30 - count 时,它不会将变量a“绑定”到变量count。它只是使用count 的当前值计算a 的值。

            如果您想“保存”表达式30 - count 以便稍后重新计算,可以将其放入函数中:

            def a(count):
              return 30 - count
            
            x = 0
            count = 0
            
            while x < 10:
                count = count+1
                x = x+1
            
            print("count is ",count)
            print("a is ",a(count))
            
            # count is  10
            # a is  20
            

            【讨论】:

              猜你喜欢
              • 2013-05-04
              • 2012-05-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多