python-3.x 如何一次返回多个字符串?

rta7y2nd  于 2022-11-19  发布在  Python
关注(0)|答案(2)|浏览(192)

我对python和编程都是新手我试着编写一个代码来给予一个数字的所有因子,但是看不到我缺少的地方

def divisores(numero):
  divisor = 0
  while divisor < numero :
    divisor += 1
    if numero % divisor == 0:
      return(divisor)

  
divisores(50)

所有它显示的是“1”,这是第一个因素。如果我使用“打印”,它确实给出了所有的因素,但我希望它都在一行中

qqrboqgw

qqrboqgw1#

返回一个list

def divisores(numero):
  divisor = 0
  divs = [] # empty list
  while divisor <= numero :
    divisor += 1
    if numero % divisor == 0:
      divs.append(divisor)
  return divs

同样,由于你将1作为除数计算,你可能也希望将numero作为有效的除数计算,因此,while divisor <= numero

cgh8pdjw

cgh8pdjw2#

如果您希望输出在一行中,那么您可以通过编写一个生成器来方便地实现这一点,您可以按如下方式解包该生成器:

def factors(n):
    def y(f):
        nonlocal neg
        yield f
        if neg:
            yield -f
    if n == 0:
        raise ValueError('Cannot factor zero')
    if neg := n < 0:
        n = -n
    yield from y(1)
    for factor in range(2, n // 2 + 1):
        if n % factor == 0:
            yield from y(factor)
    yield from y(n)

print(*factors(50))

输出:

相关问题