@Dno-test
Начинающий программист:c#,c++,python,vbasik

Как исправить ошибку Python?

def gcd(a, b): 
    while b: 
        a, b = b, a % b 
    return a 

def main(a,b,c): 
    return(gcd(gcd(a,b),c))

def getPowers(n, p):
    vac=[]
    with open(str(p)+".txt", "r") as f:
        for x in range(1, n + 1):
            vac.append(f.readline(x))
    return vac

def detNumbers(n,p):
    xxx=0
    a1=[]
    a2=[]
    a3=[]
    vac=getPowers(n, p)
    for x in range(1, p):
        for y in range(x + 1, p-1):
            for z in range(y+1, p+1):
                if main(x,y,z)==1:
                    if gcd(x, y)==gcd(y, z)==gcd(x, z)==1:
                        if vac[x]+vac[y]==vac[z]:
                            xxx=xxx+1
                            a1[xxx].append(x)
                            a2[xxx].append(y)
                            a3[xxx].append(z)

    for c in range(1, p+1):
        with open("Тройки"+str(c)+".txt", "w") as f:
            for g in range(1, xxx + 1):
                f.write(a1[g] + " " + a2[g] + " " + a3[g] + "\n")

for pop in range(1, 1000+1):
    detNumbers(2000,pop)
  • Вопрос задан
  • 374 просмотра
Решения вопроса 1
shultais
@shultais
Обучаю программированию на Python и SQL
Вот тут ошибки
a1[xxx].append(x)
a2[xxx].append(y)
a3[xxx].append(z)

Вы обращаетесь к элементам списков a1, a2 и a3, но изначально списки пустые и скорее всего у вас возникает исключение IndexError.

Если хотите добавить элемент в список, то нужно писать так
a1.append(x)
a2.append(y)
a3.append(z)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
JRazor
@JRazor
Senior StarkOverFlow Programmer
Извините, но здесь не личная техподдержка Python и разбирать ваш код с ужасно именнованными переменными никто не будет. Учитесь искать ошибки самостоятельно, иначе выльется в плохую привычку.

Могу только порекомендовать обратить внимание на ошибку в эмуляторе Python и погуглить ее. Ошибки эмулятор выявляет и показывает хорошо, так что проблем возникнуть не должно.
Ответ написан
Комментировать
@Dno-test Автор вопроса
Начинающий программист:c#,c++,python,vbasik
line 39, in detNumber(2000,1000)
line 29, in detNumber a1[xxx].append(x)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы