我需要编写一个函数来查找负数的因子并将其输出到列表中。我该怎么做?我可以让函数做正数(见下文),但不能做负数。

#Finds factors for A and C
def factorspos(x):
    factorspos = [1,-6];
    print("The factors of",x,"are:")
    for i in range(1, x + 1):
        if x % i == 0:
            factorspos.append(i)
            print(i)


我尝试更改循环计数的值,以便将其从选择的数字计数为1(下面的代码),但仍然没有结果:(

#Finds factors for A and C
def factorspos(x):
    factorspos = [int(-6),1];
    print("The factors of",x,"are:")
    for i in range(int(-6), x + 1):
        if x % i == 0:
            factorspos.append(i)
            print(i)


我已将Cco更改为固定号码。

#Finds factors for A and C
def factorspos(x):
    Cco = -6
    factorspos = [int(Cco),1];
    print("The factors of",x,"are:")
    for i in range(int(Cco), x + 1):
        if x % i == 0:
            factorspos.append(i)
            print(i)
            return factorspos

最佳答案

def factorspos(x):
    x = int(x)
    factorspos = []
    print("The factors of",x,"are:")
    if x > 0: # if input is postive
        for i in range(1,x+1):
            if x % i == 0:
                factorspos.append(i)
                print(i)
        return factorspos
    elif x < 0: #if input is negative
        for i in range(x,0):
            if x % i == 0:
                factorspos.append(i)
                print(i)
        return factorspos


print(factorspos(12))   #outputs [1, 2, 3, 4, 6, 12]
print(factorspos(-12))  #outputs [-12, -6, -4, -3, -2, -1]


实际上,您实际上已经接近解决您的问题。我随意在您的产品上添加了额外的功能。基本上,我添加了一个条件检查器,以查看输入x是正还是负,该函数做了两个不同的事情。他们所做的就是您提供的内容,但需要进行清理。

注意事项range()从第一个数字(包括第一个数字)开始,到第二个参数缺少的数字结束。 range(1,10)将给您1到9。所以这就是为什么如果您看时,负数部分的范围是从x到0,因为它将表示x到-1。在正数部分,由于+1确保我们包括输入内容,因此它将从1变为x + 1。从那以后,您所知道的其余部分,您就写了;如果不是随意问问题。

关于python - 查找负数因子的功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40029623/

10-12 19:12