Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 11, 2019 19:42:21

also1
Зарегистрирован: 2019-12-06
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу хелпу.

Есть вот такой код:

 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

Отредактировано also1 (Дек. 11, 2019 19:43:20)

Офлайн

#2 Дек. 11, 2019 22:44:01

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Прошу хелпу.

 for M, N in [(A, B), (B, C), (C, D), (D, A)]:

Офлайн

#3 Дек. 12, 2019 09:39:57

also1
Зарегистрирован: 2019-12-06
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу хелпу.

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

Офлайн

#4 Дек. 12, 2019 11:57:20

panama555
Зарегистрирован: 2019-02-19
Сообщения: 175
Репутация: +  4  -
Профиль   Отправить e-mail  

Прошу хелпу.

Привет! Вам как помочь? Указать ошибку или подсказать как её найти?

Отредактировано panama555 (Дек. 12, 2019 11:57:45)

Офлайн

#5 Дек. 12, 2019 12:39:53

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Прошу хелпу.

вот это что?

 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)…..



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#6 Дек. 12, 2019 15:18:34

panama555
Зарегистрирован: 2019-02-19
Сообщения: 175
Репутация: +  4  -
Профиль   Отправить e-mail  

Прошу хелпу.

     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)
вот так должно быть

Отредактировано panama555 (Дек. 12, 2019 15:19:37)

Офлайн

#7 Дек. 12, 2019 15:35:50

also1
Зарегистрирован: 2019-12-06
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу хелпу.

Спасибо. Понял и получилось.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version