使用斐波那契序列了解Python变量分配技术的影响
#python #variables #variableassignment #fibonacci

Python提供了两种分配变量的方法;单个和多变量分配。您使用的可变分配技术的选择有时会对您的代码准确性产生巨大影响。

本文将解释两种变量分配方法,并将使用Fibonacci sequence来说明每个变量的变化。

先决条件

要跟随,您应该有:

  • 在计算机或在线IDE上安装的VScode等代码编辑器,例如replit

  • python如果您在计算机上本地使用代码编辑器,则安装了Python。

单个变量分配

在单个变量分配下,只有一个值分配给单个变量,如下:

x=5

如果在第一个x变量分配下,您可以重新引导x 10并打印出来,则先前的值将被覆盖,并且您将10作为x的新值,如下所示:

variable reassignment

多变量分配

在多个变量分配下,多个变量可以引用一个单个值,如下所示:

python中的可变分配遵循左右规则,在这种情况下发生的是,10的值首先分配给了变量r,然后分配给qr,最后,q被分配给p

也在多个变量分配下,可以将多个值分配给单行上的多个变量,如下所示:

在上面的示例中,创建了(5,10,15)的元组并迭代以将值分配给a,bc

现在,您必须思考“哦,我可以选择单个变量分配并坚持下去” - 但有时它不适合所有尺寸。根据问题的不同,可能需要更改可变分配以达到所需的准确性水平。

斐波那契序列

在数学中, fibonacci序列是一个sequence,其中每个数字是两个先前的总和。斐波那契序列的数字被称为 fibonacci数字。序列通常从0和1开始,尽管一些作者从1和1启动了序列,或有时(fibonacci也是1和1)。 2.从0和1开始,序列中的前几个值为:

0、1、1、2、3、5、8、13、21、34、55、89、144。

  • wikipedia

要分解它,序列中有两个初始数字。 01。下一个斐波那契号是01的总和,即1。现在,该序列由0,1,1.组成,下一个数字将是序列中的最后两个数字的总和-11,以使其成为0,1,1,2等等....

在此示例中,目标是编写一个具有参数n的函数,该函数将使用n作为限制生成斐波那契数。实现这一目标的步骤如下:

  1. 创建变量xy分别存储初始值01

  2. 为fibonacci编号创建一个空数组

  3. 循环穿过限制以添加fibonacci编号

  4. 在循环中,将x设置为yyyxy

  5. 返回fibonacci编号的数组

上面的伪代码现在变为:

def generate_fibonacci(n):
  x= 0
  y=1
  fibs = []
  while x < n:
    fibs.append(x)
    x = y
    y = x + y
  return fibs

print(generate_fibonacci(100))

运行此代码时,您应该在终端中具有以下结果

只是为了确保函数返回准确的结果,添加单位测试以测试其输出

import unittest

class FibonacciGeneratorTest(unittest.TestCase):

  def test_generate_fibonacci(self):
    # Test the Fibonacci generator for various inputs
    test_cases = [(0, []), (1, [0]), (2, [0, 1, 1]),
                  (10, [0, 1, 1, 2, 3, 5, 8]),
                  (100, [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89])]

    for n, expected_sequence in test_cases:
      with self.subTest(n=n):
        self.assertEqual(generate_fibonacci(n), expected_sequence)

if __name__ == ' __main__':
  unittest.main()

在上面的代码中,我们导入Unitest模块,并为generate_fibonacci函数编写测试。添加了一系列测试用例,限制是每个元组中的第一项,而预期的斐波那契序列是第二个项目。然后,我们在测试用例上循环,并断言从generate_fibonacci(n)返回的值等于预期的fibonacci序列。

进行测试,您应该在Teminal

中获得结果

好吧,看起来测试失败了! generate_fibonacci函数无法正常工作的指标,需要重构以提供所需的结果。

当您批判性地查看generate_fibonacci函数的序列时,您可以观察到程序数是前面数字的倍数 - 出现问题可能在while loop中。

def generate_fibonacci(n):
#.....
  while x < n:
    fibs.append(x)
    x = y
    y = x + y
  #......

从while循环中,将初始的x(0)附加到fibs数组后,x设置为y (1)的值; y成为11的总和,添加了1个序列。此后,随后的迭代产生了前面数字的倍数。这不是我们要实现的目标!

要解决上述问题,请使用多个变量分配重构代码:

def generate_fibonacci(n):
  x = 0
  y = 1
  fibs = []
  while x < n:
    fibs.append(x)
    x, y = y, x + y
  return fibs

print(generate_fibonacci(100))

运行代码,您应该在终端中有结果

现在,您有一个准确的指定限制的斐波那契数列表,并且测试也通过了!

那么,发生了什么变化?好,使用多个变量分配,可以根据其现有值将新值分配给xy。在以前的实现中,重新分配x的值与y意味着y将成为xy的新值的总和。

除了基于其现有值重新分配变量外,当变量之间的多变量分配技术在变量之间通常使用:

如下:

结论

如果您已经了解了Python变量分配方法以及每种方法如何影响您的代码准确性。