Python 3.x 如何使素数factorser函数的输出看起来像预期的那样?

Python 3.x 如何使素数factorser函数的输出看起来像预期的那样?,python-3.x,Python 3.x,所以我应该编程一个素数分解器,我做了如下操作: 导入数学 n=int(输入(“输入一个数字”)) def PrimeFactorier(n): lst=[] 当n%2==0时: #印刷品(2) n=n/2 一、追加(2) 对于范围(3,int(数学sqrt(n))+1,2)内的i: 当n%i==0时: #印刷品(一) n=n/i 一、附加(一) 如果n>2: #打印(内部(n)) 附加(int(n)) 打印(lst) #打印(lst) 打印(str(n)+“=”) 打印(primefactor

所以我应该编程一个素数分解器,我做了如下操作:

导入数学
n=int(输入(“输入一个数字”))
def PrimeFactorier(n):
lst=[]
当n%2==0时:
#印刷品(2)
n=n/2
一、追加(2)
对于范围(3,int(数学sqrt(n))+1,2)内的i:
当n%i==0时:
#印刷品(一)
n=n/i
一、附加(一)
如果n>2:
#打印(内部(n))
附加(int(n))
打印(lst)
#打印(lst)
打印(str(n)+“=”)
打印(primefactorieser(n))
两件事:

首先,您需要从函数中返回列表:将
print(lst)
替换为
return lst
。这就是如何将变量传递回函数,以便调用方可以使用结果

其次,您需要以正确的格式打印列表
str.join()
是执行此操作的常用方法,这意味着选择一个字符串并在列表的每个元素之间打印它

在这种情况下,您需要替换

print(primeFactoriser(n))


我注意到您还有两个打印语句。第一个可能会创建一个新行,将第二个all放在自己的行上。我建议将它们合并成一份单独的打印报表:

print(str(n), '=', ' x '.join(primeFactoriser(n)))
它会自动在每个参数之间留出一个空格。 或者,您可以保持现在的状态,但在第一个打印调用中添加
end
参数,使其不打印换行符:

print(str(n) + ' = ', end='')

print(str(n),'=','x'.join(primefactorieser(n)))我尝试了上面的方法,但一直得到一个类型错误:只能连接一个iterable。如何修复此问题?别忘了让
primefactorieser()
返回您在整个过程中一直附加到的
lst
。仅供参考,我已使用名称primeList保存了返回的列表。返回列表后,我得到以下错误:回溯(最近一次调用last):文件“code.py”,第25行,打印(str(n),“=”,“x”。join(primeList))类型错误:序列项0:预期的str实例,int foundAh,ok,因此
join()
预期iterable是字符串列表。您可以通过列表理解来修复此问题:
“x”。join(str(i)表示primeList中的i)
我做了以下操作,现在它已修复!非常感谢!!primes=primefactorieser(n),primeList=[str(num)表示primes中的num],print(str(n),“=”,“x).连接(primeList))
print(str(n) + ' = ', end='')