【发布时间】:2018-02-24 01:17:57
【问题描述】:
我用 Python 为我的计算机科学课编写了一个分数加法器。但是,我在最终答案缩减过程中遇到了问题。
该过程在 for 循环的开头使用“不等于”比较运算符 != 来测试在除分子和分母时是否会有一个余数。如果有余数(分子 % 分母 ≠ 0),则执行过程:每个除以 n,然后 n 递增,for > 循环再次运行。这种情况一直持续到它们彼此平均分配为止。
首先,我收到一个语法错误:
python FractionAdder.py 2 4 6 8
File "FractionAdder.py", line 23
for ansnum % n != 0 and ansdenom % n != 0:
^
SyntaxError: invalid syntax
其次,for 循环并不完全健壮。我的预期目的是将最终答案简化为最简单的形式,但现在,它只是继续增加 n 并减少,直到分子和分母均匀地分开。这是一个问题:3 均分为 6,但 3/6 不是最简单的形式。我可以就如何提高我的程序的稳健性提出一些建议,例如 n 继续增加并且循环继续循环直到实现最简单的形式? (有没有更好的方法来构建我的条件来实现这一点?)
完整代码:
import sys
num1 = int(sys.argv[1])
denom1 = int(sys.argv[2])
num2 = int(sys.argv[3])
denom2 = int(sys.argv[4])
n = 1
# Find common denominators and adjust both fractions accordingly.
while denom1 != denom2:
denom1 = denom1 * denom2
num1 = num1 * denom2
denom2 = denom2 * denom1
num2 = num2 * denom2
# Add the numerators and set the ansdenom (denom1 and denom2 should be equal by this point if LCD function worked)
ansnum = num1 + num2
ansdenom = denom1
# Reduce the answer.
n = 2
for ansnum % n != 0 and ansdenom % n != 0:
ansnum = ansnum / n
ansdenom = ansdenom / n
n += 1
print("The sum of the two fractions is:" + str(ansnum) + "//" + str(ansdenom))
提前致谢!
【问题讨论】:
-
我认为你需要一个
while循环而不是第 23 行中的for。
标签: python math stored-procedures console arithmetic-expressions