Список как способ хранения данных

Сначала мы создадим список возможных цветов:

colors = ['red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'magenta', 'black', 'gray', 'lightgreen']

Теперь, без всякой случайности, выберем оранжевый и синий цвет (нумерация идет с нуля):
оранжевый — colors[1]
синий – colors[5]

Убедимся, что это работает:

from turtle import *
from random import randrange as rnd
colors = ['red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'magenta', 'black', 'gray', 'lightgreen']
color(colors[5],colors[1])
speed(100)
pu()
for z in range(12):
    x = rnd(-200,200)
    y = rnd(-200,300)
    setpos(x,y)
    pd()
    begin_fill()
    circle(rnd(10,50))
    end_fill()
    pu()
done()

Остался один шаг – выбирать случайный номер. Для этого нужно знать длину списка. Можно написать так: rnd(10), но так делать не стоит. Ведь мы можем захотеть удалить или добавить цвет. Придется переделывать код программы, что не очень удобно. Лучше мы узнаем длину списка: len(colors), и это значение подставим в функцию rnd: rnd(len(colors)). Теперь по номеру возьмем цвет:

from turtle import *
from random import randrange as rnd
colors = ['red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'magenta', 'black', 'gray', 'lightgreen']
color(colors[rnd(len(colors))],colors[rnd(len(colors))])
speed(10)
pu()
for z in range(12):
    x = rnd(-200,200)
    y = rnd(-200,300)
    setpos(x,y)
    pd()
    begin_fill()
    circle(rnd(10,50))
    end_fill()
    pu()
done()

Работает, но … цвет одинаковый! При каждом запуске – свой, но одинаковый у всех окружностей. Так не пойдет – нужно перенести выбор цвета внутрь цикла:

from turtle import *
from random import randrange as rnd
colors = ['red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'magenta', 'black', 'gray', 'lightgreen']
speed(10)
pu()
for z in range(12):
    color(colors[rnd(len(colors))],colors[rnd(len(colors))])
    x = rnd(-200,200)
    y = rnd(-200,300)
    setpos(x,y)
    pd()
    begin_fill()
    circle(rnd(10,50))
    end_fill()
    pu()
done()

Ну вот так намного веселее. Особенно, если добавить еще кружков.

1. Нарисовать 10 окружностей в случайном месте, случайным радиусом, случайным цветом
2. Нарисовать 20 квадратов в случайном месте, случайным размером, случайным цветом, повернутых на случайный угол
3. Нарисовать случайное количество (не менее 10 и не более 30) окружностей в случайном месте, случайным цветом
4. Нарисовать 10 прямоугольников в случайном месте, случайного цвета, случайного размера
5. *Создать команду «Звезда» для рисования пятиконечной звезды
6. *Нарисовать 10 звезд случайным цветом в случайном месте, случайного цвета
7. *Изменить команду «Звезда», чтобы можно было рисовать звезду с произвольным количеством лучей
8. *Нарисовать 10 звезд случайным цветом, в случайном месте, случайного размера, со случайным количеством лучей
9. **Что умеет функция random.choice?

3 thoughts on “Список как способ хранения данных

  1. Здраствуйте, уроки у вас просто замечательные, причем не только для детей. Старому админу тоже помогают на работе время провести с пользой. Один совет — раскрутите сайт хоть немного. Ваш сайт нашел случайно, поисковики на запросы «python, tkinter, уроки, и т.д.» выдают кучу устаревшего материала. Если ваш сайт будет на первых страницах — то посетителей у вас будет много. Удачи, и спасибо за уроки.

    1. Добрый день. Спасибо на добром слове. Раскруткой сайта пока заниматься рано — еще мало уроков, еще не все ошибки выловлены.
      Как закончу третью главу — так займусь активнее.
      Удачи и заходите еще, предлагайте идеи простых игр, полезных программ.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *