2013-03-30 2 views
-3

Я изучаю код на python, используя Project Euler. Я написал следующую программу, которую я думаю, должен работать:Что не так с моей программой python?

a=1 
b=1 
c=1 

while(a<=998): 
while(b<=998): 
    c=(1000-(a+b) 

    if (a*a+b*b==c*c): 
     print a,b,c 
    b=b+1 
a=a+1 

Однако, когда я на самом деле запустить программу из терминала, интерпретатор говорит, что строка 9

if (a*a+b*b==c*c): 

является недействительным. Может ли кто-нибудь сказать мне, почему это?

благодаря

+0

с = (1000- (а + б) ')' – hughdbrown

+0

Некоторые вопросы должны пройти базовую компиляцию здесь, прежде чем они будут опубликованы: D – Maroun

+0

вы не следует смешивать вкладки с пробелами, я рекомендую форматировать ваш код для SO с пробелами ** только ** – Anthon

ответ

3

Предполагая, что вы ищете пифагорейские тройки, удовлетворяющие условию, и вы не хотите, треугольников с отрицательными сторонами:

for a in range(1, 999): 
    for b in range(1, 1000 - a): 
     c = 1000 - (a + b) 
     if a * a + b * b == c * c: 
      print a, b, c 

И вы можете получить уникальные триплеты в порядке возрастания следующим образом:

for a in range(1, 999): 
    for b in range(a, 1000 - a): 
     c = 1000 - (a + b) 
     if a * a + b * b == c * c: 
      print a, b, c 

И была опечатка в исходном коде: c=(1000-(a+b)

4

непосредственно предшествующая линия отсутствует закрывающая скобка:

c=(1000-(a+b) 
+0

Большое вам спасибо. Теперь я чувствую себя совсем немой. Я как бы новичок, и я не думал, что ошибка, которую интерпретатор сказал, была на одной линии, действительно может быть где-то в другом месте. –

Смежные вопросы