Найти - Пользователи
Полная версия: Нарисовать радугу
Начало » Python для новичков » Нарисовать радугу
1
allmax
Добрый вечер, уважаемые!
 def raduga():
    for i in range (0, 180, 30):
        w.create_oval(350 - i, 550 - i, 450 + i, 650 + i, width = 30, outline='red')

Как сделать, чтобы в outline каждый проход цикла попадал новый цвет? Например, красный, оранжевый, желтый и т.д
xam1816
allmax
Как сделать, чтобы в outline каждый проход цикла попадал новый цвет?
как бы вы это сделали,если бы делали это вручную?
allmax
xam1816
Вручную я бы нарисовал 7 “овалов” и каждый с новым цветом. Не знаю как в цикл подставлять цвета.
xam1816
allmax
Вручную я бы нарисовал 7 “овалов” и каждый с новым цветом. Не знаю как в цикл подставлять цвета.
Присмотритесь пристально к алгоритму,который бы вы составили в голове,когда рисуете радугу.и опишите его на языке программирования.К примеру
цвета у нас хранятся в памяти
чтобы перечислить цвета нужно
взять первый цвет из памяти
вывести
взять второй цвет
вывести
и тд…

чтобы нарисовать радугу нужно
взять первую дугу с цветом
вывести
в зять вторую дугу с другим цветом
вывести
и тд…

Список цветов в голове я не знаю как у вас выглядит
на Pythone вот так:
 list = ['red','orange','yellow','green','blue','indigo','violet']
allmax
xam1816
У меня пока получается менять только радиус в цикле. Как сюда ещё прибавить цвета? Меняю переменную по координате. Как же сделать, чтобы эта же переменная меняла и цвет..
xam1816
 from tkinter import Tk, Canvas
root = Tk()
w = Canvas(root, width=1000, height=600, bg = "black")
def raduga():
    colors = ['red','orange','yellow','green','blue','indigo','violet']
    for i, c in zip(range (0, 210, 30),colors):
        w.create_oval(350 - i, 550 - i, 450 + i, 650 + i, width = 30, outline=c)
        w.pack()
raduga()
root.mainloop()

функция zip() для одновременной итерации из списков
allmax
xam1816
Большое спасибо!
Vigi
or not using zip:
 def rainbow():
    i = 0
    for color in ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet']:
        w.create_oval(350 - i, 550 - i, 450 + i,
                      650 + i, width=30, outline=color)        
        w.pack()
        i += 30
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