Python提供了两种分配变量的方法;单个和多变量分配。您使用的可变分配技术的选择有时会对您的代码准确性产生巨大影响。
本文将解释两种变量分配方法,并将使用Fibonacci sequence来说明每个变量的变化。
先决条件
要跟随,您应该有:
单个变量分配
在单个变量分配下,只有一个值分配给单个变量,如下:
x=5
如果在第一个x
变量分配下,您可以重新引导x
10
并打印出来,则先前的值将被覆盖,并且您将10
作为x
的新值,如下所示:
多变量分配
在多个变量分配下,多个变量可以引用一个单个值,如下所示:
python中的可变分配遵循左右规则,在这种情况下发生的是,10
的值首先分配给了变量r
,然后分配给q
的r
,最后,q
被分配给p
。 P>
也在多个变量分配下,可以将多个值分配给单行上的多个变量,如下所示:
在上面的示例中,创建了(5,10,15)
的元组并迭代以将值分配给a,b
和c
现在,您必须思考“哦,我可以选择单个变量分配并坚持下去” - 但有时它不适合所有尺寸。根据问题的不同,可能需要更改可变分配以达到所需的准确性水平。
斐波那契序列
在数学中, 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
要分解它,序列中有两个初始数字。 0
和1
。下一个斐波那契号是0
和1
的总和,即1
。现在,该序列由0,1,1.
组成,下一个数字将是序列中的最后两个数字的总和-1
和1
,以使其成为0,1,1,2
等等....
在此示例中,目标是编写一个具有参数n
的函数,该函数将使用n
作为限制生成斐波那契数。实现这一目标的步骤如下:
-
创建变量
x
和y
分别存储初始值0
和1
-
为fibonacci编号创建一个空数组
-
循环穿过限制以添加fibonacci编号
-
在循环中,将
x
设置为y
和y
的y
和x
和y
-
返回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
成为1
和1
的总和,添加了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))
运行代码,您应该在终端中有结果
现在,您有一个准确的指定限制的斐波那契数列表,并且测试也通过了!
那么,发生了什么变化?好,使用多个变量分配,可以根据其现有值将新值分配给x
和y
。在以前的实现中,重新分配x
的值与y
意味着y
将成为x
和y
的新值的总和。
除了基于其现有值重新分配变量外,当变量之间的多变量分配技术在变量之间通常使用:
如下:结论
如果您已经了解了Python变量分配方法以及每种方法如何影响您的代码准确性。