IDLE上的语法错误帮助-Python 3

时间:2015-08-25 17:22:38

标签: python syntax

multiNum = 1.0
multiDen = 1.0
for den in range(11,100):
    for num in range(10,den): # ensure fraction < 1
        if (den%10 != 0 or  num%10 != 0):
            frac = num/den
            cancelFrac = (float(str(num)[0])) / (float(str(den)[0])         
            if ((abs(frac - cancelFrac)) < 0.00001):
                multiNum = multiNum*(int(str(num)[0]))
                multiDen = multiDen*(int(str(den)[0]))
## simplyfy fraction
i = 2
while ((multiNum%i == 0) and (multiDen%i == 0)):
    multiNum = multiNum/i
    multiDen = multiDen/i                                          
i = 3
while ((multiNum%i == 0) and (multiDen%i == 0)):
    multiNum = multiNum/i
    multiDen = multiDen/i
i = 5
inc = 2
while (i < 82):    ## this function generates primes (and more)
    while ((multiNum%i == 0) and (multiDen%i == 0)):
        multiNum = multiNum/i
        multiDen = multiDen/i 
    i = i + inc
    inc=6-inc
print(multiDen)

这个程序正用于项目euler问题33,我找不到语法错误。我正在使用IDLE。 这是我试图解决的问题

49/98分数是一个奇怪的分数,作为一个没有经验的数学家试图简化它可能错误地认为49/98 = 4/8,这是正确的,是通过取消9s获得的。

我们将考虑像30/50 = 3/5这样的分数是微不足道的例子。

这种类型的分数恰好有四个非平凡的例子,小于一个值,并且在分子和分母中包含两个数字。

如果这四个分数的乘积以最低的常用项给出,请找到分母的值。

2 个答案:

答案 0 :(得分:1)

当按操作顺序处理分组时,您在代码中使用了太多括号。例如,while ((multiNum%i == 0) and (multiDen%i == 0)):只能是while multiNum%i == 0 and multiDen%i == 0:,或while not (multiNum%i or multiDen%i):符合De Morgan定律。

这个括号内的拙见导致第7行遗失了一个:

cancelFrac = (float(str(num)[0])) / (float(str(den)[0])
                                                       ^

我建议使用跟踪匹配括号的开发环境。甚至像Notepad ++这样的东西也可以。

答案 1 :(得分:0)

我可以看到一个语法错误:

cancelFrac = (float(str(num)[0])) / (float(str(den)[0])  
#Mismatched parenthesis right here  ^------------------^

一般来说,你也有太多的括号。例如,这可以正常工作:

cancelFrac = float(str(num)[0]) / float(str(den)[0])

这个

i = 2
while ((multiNum%i == 0) and (multiDen%i == 0)):
    multiNum = multiNum/i
    multiDen = multiDen/i 

应简化为此

i = 2
while multiNum % i == 0 and multiDen % i == 0:
    multiNum = multiNum/i
    multiDen = multiDen/i 

此外,将来请包含您的追溯,它将帮助每个人帮助您找到错误。