一个输出后,For循环停止

时间:2018-10-09 08:21:30

标签: python

使乘积,乘数和被乘数为整数

def fac(n) :
  f = []
  for i in range(2,int(n/2)) :
    if n % i == 0 : f.append(i)
  return f
def check(n) :
  g = []
  for j in fac(n) :
    g.append(n)
    g.append(j)
    g.append(int(n/j))
    x = int("".join(map(str, g)))
    return x
print (check(28))

给出预期的输出28214,但此后仅给出一个输出停止 为什么下一个2847(28,4,7)不返回?

3 个答案:

答案 0 :(得分:1)

Return退出该函数,该函数退出循环。您可以尝试在循环中打印x或建立x,然后在循环外返回x。

答案 1 :(得分:0)

for j in fac(n) :
    g.append(n)
    g.append(j)
    g.append(int(n/j))
    x = int("".join(map(str, g)))
    return x

return x与迭代器对齐;如果您希望它返回多个值,则需要将其向左移动,使其与for j循环对齐。

我还认为您想返回列表g而不是x。

答案 2 :(得分:0)

好吧,您只需将check in return函数更改为yield,从而将其转换为生成器,我们就可以使用next函数遍历输出了

def fac(n) :
  f = []
  for i in range(2,int(n/2)) :
    if n % i == 0 : f.append(i)
  return f

def check(n) : 
  for j in fac(n) :
    g=[]
    g.append(n)
    g.append(j)
    g.append(int(n/j))
    x = int("".join(map(str, g)))
    yield x
print("using for loop")
#print (check(28))
for i in check(28):
    print(i)


print("Using next function")
n=check(28)
print(next(n))
print(next(n))
print(next(n))

输出

using for loop
28214
2847
2874
Using next function
28214
2847
2874