Найти - Пользователи
Полная версия: Прошу хелпу.
Начало » Python для новичков » Прошу хелпу.
1
also1
Есть вот такой код:
 import graphics as gr
window = gr.GraphWin("Russian game", 700, 700)
alpha = 0.1
def f_r(A, B, C, D, deep=10):
    if deep < 0:
        return
    for M, N in (A, B), (B, C), (C, D), (D, A):
        gr.Line(gr.Point(*M), gr.Point(*N)).draw(window)
    A1 = (A[0] * (1 - alpha) + B[0] * alpha + A[1] * (1 - alpha) + B[1] * alpha)
    B1 = (B[0] * (1 - alpha) + C[0] * alpha + B[1] * (1 - alpha) + C[1] * alpha)
    C1 = (C[0] * (1 - alpha) + D[0] * alpha + C[1] * (1 - alpha) + D[1] * alpha)
    D1 = (D[0] * (1 - alpha) + A[0] * alpha + D[1] * (1 - alpha) + A[1] * alpha)
    f_r(A1, B1, C1, D1, deep - 1)
f_r((100, 100), (500, 100), (500, 500), (100, 500), 100)
У преподавателя все работает правильно, у меня ну ни как не хочет. Где накосячил? Сам уже все мозги сломал.
У меня на мгновенье открывается окно с одним квадратом и сразу пропадает. И ошибка:
I:\python\python.exe GALSO/Верстка/Python/Коды/04/003.py
Traceback (most recent call last):
File “GALSO/Верстка/Python/Коды/04/003.py”, line 19, in <module>
f_r((100, 100), (500, 100), (500, 500), (100, 500), 100)
File “GALSO/Верстка/Python/Коды/04/003.py”, line 16, in f_r
f_r(A1, B1, C1, D1, deep-1)
File “GALSO/Верстка/Python/Коды/04/003.py”, line 11, in f_r
gr.Line(gr.Point(*M), gr.Point(*N)).draw(window)
TypeError: type object argument after * must be an iterable, not float

Process finished with exit code 1
Romissevd
 for M, N in [(A, B), (B, C), (C, D), (D, A)]:
also1
Romissevd
Не помогло. В оригинале квадратных скобок нет.
Traceback (most recent call last):
File “DYandexDisk/YandexDisk/ALSO/Верстка/Python/Коды/04/003.py”, line 19, in <module>
f_r((100, 100), (500, 100), (500, 500), (100, 500))
File “DYandexDisk/YandexDisk/ALSO/Верстка/Python/Коды/04/003.py”, line 16, in f_r
f_r(A1, B1, C1, D1, deep-1)
File “DYandexDisk/YandexDisk/ALSO/Верстка/Python/Коды/04/003.py”, line 11, in f_r
gr.Line(gr.Point(*M), gr.Point(*N)).draw(window)
TypeError: type object argument after * must be an iterable, not float

Process finished with exit code 1
panama555
Привет! Вам как помочь? Указать ошибку или подсказать как её найти?
PEHDOM
вот это что?
 f_r(A1, B1, C1, D1, deep - 1)
функция f_r должна принимать кортежи/списки в качестве аргументов, а вы ей передаете float
 A1 = (A[0] * (1 - alpha) + B[0] * alpha + A[1] * (1 - alpha) + B[1] * alpha)
толи вы гдето забыли открыть-закрыть скобки в A1 = (… B1=… и т.д.
толи вызов функции должен быть вида f_r((A1, B1), (B1, C1)…..
panama555
     A1 = (A[0] * (1 - alpha) + B[0] * alpha, A[1] * (1 - alpha) + B[1] * alpha)
    B1 = (B[0] * (1 - alpha) + C[0] * alpha, B[1] * (1 - alpha) + C[1] * alpha)
    C1 = (C[0] * (1 - alpha) + D[0] * alpha,  C[1] * (1 - alpha) + D[1] * alpha)
    D1 = (D[0] * (1 - alpha) + A[0] * alpha,  D[1] * (1 - alpha) + A[1] * alpha)
вот так должно быть
also1
Спасибо. Понял и получилось.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB