Python 蟒蛇,被杀了?
好的,我终于开始学习python中的数学,这(到目前为止)出乎意料地没有我想象的那么难(我不懂微积分或三角学,只懂基本代数)。 我正试图从头开始创建一个程序,考虑二次方程。以下是我到目前为止所做的(如果写得不好,很抱歉): 我在终端上运行了这个脚本,它问我A B和C是什么,然后它冻结了大约30秒。当它在我输入的下方解冻后,上面写着“杀死”。Python 蟒蛇,被杀了?,python,math,Python,Math,好的,我终于开始学习python中的数学,这(到目前为止)出乎意料地没有我想象的那么难(我不懂微积分或三角学,只懂基本代数)。 我正试图从头开始创建一个程序,考虑二次方程。以下是我到目前为止所做的(如果写得不好,很抱歉): 我在终端上运行了这个脚本,它问我A B和C是什么,然后它冻结了大约30秒。当它在我输入的下方解冻后,上面写着“杀死”。 有人知道这是什么原因吗?非常感谢您的回答或建议。请修改您的代码,如下所示: def factor(arg): o = arg n =
有人知道这是什么原因吗?非常感谢您的回答或建议。请修改您的代码,如下所示:
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)
请尝试以下方法:
ACpf = factor(A * C) # Possible factors of (A * C)
for i in ACpf[:]: # Loop over a copy of ACpf
ACpf.append(-i)
[:]符号用于复制列表。这样可以确保在循环列表时不会对列表进行变异(增加)
此外,这里还对factor()的代码进行了一些清理:
你是在自己的电脑上运行还是在工作/学校的电脑上运行?这听起来很像是你在一台共享的机器上超过了你的CPU配额。关于三角学,你首先应该学习的是如何使用它:-)快速、轻松地分解二次方程是一个已解决的问题。Python甚至支持复杂的根。@GuySirton-这不是递归函数,所以我怀疑这是堆栈溢出。IgnacioVazquez-Abrams:我认为这是一个家庭作业问题(kindall在他的共享计算机猜测中可能是正确的),所以这可能不是一个选项。还有,paxdiablo:这是“拼写”:p.谢谢你们的帮助,我很感激。
如果(o)%x==0:
最好写为如果不是o%x:
ACpf = factor(A * C) # Possible factors of (A * C)
for i in ACpf[:]: # Loop over a copy of ACpf
ACpf.append(-i)
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