使乘积,乘数和被乘数为整数
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)不返回?
答案 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