Python,被杀了?

2024-10-02 20:39:06 发布

您现在位置:Python中文网/ 问答频道 /正文

好了,我终于开始用python来学习数学,它(到目前为止)并不像我想象的那么难(我不懂微积分或三角函数,只懂基本代数)。 我正在尝试从头开始创建一个程序,这个程序考虑二次方程。以下是我到目前为止的情况(如果写得不好,很抱歉):

def factor(arg):    
    o = arg
    n = o
    x = 2
    factors = [o]

    while abs(o) >= x:
        if (o) % x == 0:
            n = o / x
            factors.append(n)
            x += 1
        else:
            x += 1

    return factors

A = int(raw_input("What is A in your quadratic equation?   A = "))
B = int(raw_input("What is B in your quadratic equation?   B = "))
C = int(raw_input("What is C in your quadratic equation?   C = "))

Br = abs(B) + abs(A)            # Range of B
Bpf = range (-Br, Br + 1)       # Possible factors of B
ACpf = factor(A * C)            # Possible factors of (A * C)

for i in ABpf:
    ACpf.append(-i) 

cf = []                          # Common factors

for i in Bpf:
    for j in ACpf:
        if i == j:
            cf.append(i)

print cf

我在终端上运行这个脚本,它问我B和C是什么,然后它冻结了大约30秒。当它在我输入的下面解冻后写着“杀死”。 有人知道是什么引起的吗?我很感激你的回答或建议。在


Tags: ofinbrinputyourrawisabs
2条回答

像这样修改代码:

def factor(arg):    
    o = arg
    n = o
    x = 2
    factors = [o]

    while abs(o) >= x:
    if (o) % x == 0:
        n = o / x
        factors.append(n)
        x += 1
    else:
        x += 1

    return factors

A = int(raw_input("What is A in your quadratic equation?   A = "))
B = int(raw_input("What is B in your quadratic equation?   B = "))
C = int(raw_input("What is C in your quadratic equation?   C = "))

Br = abs(B) + abs(A)            # Range of B
Bpf = range (-Br, Br + 1)       # Possible factors of B
ABpf = factor(A * C)            # Possible factors of (A * C)
ACpf = []
for i in ABpf:
    ACpf.append(i)
    ACpf.append(-1*i) 

cf = []                          # Common factors

for i in Bpf:
    for j in ACpf:
    if i == j:
        cf.append(i)

print cf

现在试着运行它。你应该会有结果的。在

问题似乎出在以下几行:

ACpf = factor(A * C)            # Possible factors of (A * C)

for i in ABpf:
    ACpf.append(-i) 

试试这个:

^{pr2}$

[:]符号用于复制列表。这样可以确保在循环列表时不会改变列表(使其增长)。在

这里还对factor()的代码进行了一些清理:

def factor(arg):
    o = arg
    factors = [o]

    for x in range(2, o+1):
        if o % x == 0:
            n = o // x
            factors.append(n)

    return factors

相关问题 更多 >