【发布时间】:2020-09-09 01:01:49
【问题描述】:
所以我试图解决一种算法,并在尝试寻找其他解决方案的同时,我发现了一个非常短且非常快的解决方案,只是一个问题......我似乎无法理解这条线在做什么:
完整解决方案:
def proper_fractions(n):
phi = n > 1 and n
print(phi)
for p in range(2, int(n ** .5) + 1):
if not n % p:
phi -= phi // p
while not n % p:
n //= p
if n > 1: phi -= phi // n
return phi
我不明白的行:
phi = n > 1 and n
请见谅如果很容易理解,我只是从来没有遇到过这样的事情,我只在if语句中使用了and,这是我将行改为(我认为像另一个一样工作,但不确定另一个是如何完全按照我更改的以下行所做的):
phi = n if n > 1 else False
请有人能解释一下我不明白的线路是如何工作的吗?
【问题讨论】:
-
False也等于0。 -
@KlausD。是的,我知道 0 是假的,但我仍然不明白“那个”行的作用,如果
n > 1,它甚至如何分配 n? -
这不是我写的。
标签: python python-3.x