语法错误帮助 -Python 3 on IDLE
Syntax error help -Python 3 on IDLE
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)
这个程序正在用于项目欧拉问题33,我找不到语法错误。我正在使用闲置。
这是我要解决的问题
分数 49/98 是一个奇怪的分数,作为一个没有经验的数学家在试图简化它时可能会错误地认为 49/98 = 4/8,这是正确的,是通过取消 9 得到的。
我们将把 30/50 = 3/5 这样的分数视为微不足道的例子。
这种分数的非平凡例子正好有四个,数值小于一个,分子和分母都包含两位数。
如果这四个分数的乘积以它的最小公项给出,求分母的值。
当按操作顺序处理分组时,您在代码中使用了太多括号。例如,while ((multiNum%i == 0) and (multiDen%i == 0)):
可能只是 while multiNum%i == 0 and multiDen%i == 0:
,或者 while not (multiNum%i or multiDen%i):
符合德摩根定律。
括号中的大量内容导致第 7 行遗漏了一个:
cancelFrac = (float(str(num)[0])) / (float(str(den)[0])
^
我建议使用跟踪匹配括号的开发环境。甚至像 Notepad++ 这样的东西也可以。
我能看到的一个语法错误是:
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
还有,以后请把你的traceback也附上,会帮助大家帮你找错的。
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)
这个程序正在用于项目欧拉问题33,我找不到语法错误。我正在使用闲置。 这是我要解决的问题
分数 49/98 是一个奇怪的分数,作为一个没有经验的数学家在试图简化它时可能会错误地认为 49/98 = 4/8,这是正确的,是通过取消 9 得到的。
我们将把 30/50 = 3/5 这样的分数视为微不足道的例子。
这种分数的非平凡例子正好有四个,数值小于一个,分子和分母都包含两位数。
如果这四个分数的乘积以它的最小公项给出,求分母的值。
当按操作顺序处理分组时,您在代码中使用了太多括号。例如,while ((multiNum%i == 0) and (multiDen%i == 0)):
可能只是 while multiNum%i == 0 and multiDen%i == 0:
,或者 while not (multiNum%i or multiDen%i):
符合德摩根定律。
括号中的大量内容导致第 7 行遗漏了一个:
cancelFrac = (float(str(num)[0])) / (float(str(den)[0])
^
我建议使用跟踪匹配括号的开发环境。甚至像 Notepad++ 这样的东西也可以。
我能看到的一个语法错误是:
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
还有,以后请把你的traceback也附上,会帮助大家帮你找错的。