<p>我想找出一个数的所有素数因子。我尝试在不传递空列表作为参数的情况下执行此操作。你知道吗</p>
<p>我可以在没有空列表参数的情况下调用函数podz,但是结果不正确-这是第一个问题-为什么?
我在podzb函数中得到了正确的结果,但必须提供空列表参数。你知道吗</p>
<p>代码:</p>
<pre><code>def podz(x, lista = ()):
# xa = []
lis = list(lista)
# lis = list(lista) # czemu to psuje wynik? jak odpalić krok po kroku?
# print(lis)
for i in range(2, x + 1):
# print(f'x: {x}')
# print(f'i: {i}')
# print(f'lis: {lis}')
if x % i == 0:
lis.append(i)
# print(f'lis2: {lis}')
podz(int(x / i), lis)
break
return(lis)
def podzb(x, lista = ()):
# xa = []
lis = lista
# lis = list(lista) # czemu to psuje wynik? jak odpalić krok po kroku?
# print(lis)
for i in range(2, x + 1):
# print(f'x: {x}')
# print(f'i: {i}')
# print(f'lis: {lis}')
if x % i == 0:
lis.append(i)
# print(f'lis2: {lis}')
podzb(int(x / i), lis)
break
return(lis)
a = podz(50, [])
print(f'a: {a}')
aa = podz(50)
print(f'aa: {aa}')
a2 = podzb(50, [])
print(f'a2: {a2}')
# aa = podzb(50) #this causes: AttributeError: 'tuple' object has no attribute 'append'
# print(f'aa: {aa}')
</code></pre>