该函数执行二进制除法。但是,我对循环的条件“while len(b) ≤ len(a) and a”感到困惑。
为什么条件中有“and a”?
“a”不是一个列表吗?那么为什么 len(b) 应该大于那个?
感谢您的帮助! <3
答案 0 :(得分:1)
在python中,空列表的布尔值为0,因此and a
可能会检查列表a
是否为空
答案 1 :(得分:1)
这是评估“a”是真还是假。它实际上是在评估“a”的大小或长度。如果“a”有任何值,那么它将评估为真。如果“a”为空,它将评估为 0 或 false。
“a”和“b”的长度都可以是 0,如果“and a”没有被包含并且“a”是空的,那么“if a[0]”表达式会导致越界异常。
基本上,如果“a”为空,则忽略 while 循环。似乎先检查“a”的状态会更简单。
答案 2 :(得分:1)
while
循环我认为您对 while
循环的阅读方式存在误解。
正如您在代码中所做的那样:
while len(b) <= len(a) and a:
这意味着它有 2 个条件,len(b) <= len(a)
和 a
。所以不要读作 len(b) <= len(a) and a
!
换句话说,这并不意味着 len(b)
必须小于 len(a)
和 a
。
a
第二个条件 (a
) 可能看起来很奇怪,因为在现实生活中这没有任何意义。
但是编程语言不同于现实生活中的句子
说有这些代码:
代码 1
a = []
print(bool(a))
代码 2
a = [1, 2, 3, 3]
print(bool(a))
代码 1 将打印出 False
代码 2 将打印出 True
原因是,在python中当一个变量有值时,它等于True
。
回到这段代码:
while len(b) <= len(a) and a:
该代码也意味着继续while
len(b) <= len(a)
和 a == True
。
所以 while
循环意味着,len(b)
必须小于 len(a)
AND a
成为 True
(必须有价值)。
答案 3 :(得分:0)
为什么条件中有“and a”?
while 循环检查 2 个条件,首先检查 b
列表的长度小于或等于 a
列表的长度。然后使用 and
语句告诉解释器您要检查第二个条件,在本例中为 a
的内容。 and
只是告诉解释器检查多个条件。