Изобразим квадрат Малевича. Вот такой:
#### #### #### ####Похож, правда?
Кроме того, пусть размер квадрата будет не постоянный, а задаваться пользователем.
Разбиваем задачу на несколько простых блоков:
1. Получить от пользователя число - размер стороны квадрата, и записать его в переменную (назовем ее size).
2. Напечатать одну строку - вывести квадратик # столько раз, сколько записано в size.
3. Повторить эту строку столько раз, сколько записано в size.
Для получения данных от пользователя знакомимся с новой командой:
raw_input("Preved medved, kak dela?")
Пользователь получит окошка для ввода с заголовком "Preved medved, kak dela?" и строчкой для ввода данных. Эти данные, полученные от пользователя мы можем записать в переменную вот так:
otvet = raw_input("Preved medved, kak dela?")
Отлично. Нас правда интересует размер квадрата, а не дела медведя, и в нашем случае строчка будет выглядеть вот так:
size = raw_input("Ukazhite razmer kvadrata")
Есть только одна проблема. Рассмотрим два примера:
1. size=3
В переменную size записали число - 3.
2. size="3"
В переменную size записали текст - "3".
В первом примере, наша переменная число, во втором текст.
Если наша следующая команда:
size = size -1
То в первом примере, переменная size теперь содержит число 2, а во втором пайтон недоуменно смотрит на нас и удивляется, ведь отнять от текста число мы уже пробовали в уроке 0, и это у нас не получилось.
Команда raw_input всегда возвращает данные как текст.
Для преобразования текста в число, знакомимся с новыми командами:
Целые числа - int
Дробные числа - float
Пример:
text = "345"
num = int(text)
num = num - 5
print num
Важно отметить, попытка преобразовать текст "3.45" в целое число с командой int выдаст ошибку. Нам придется сделать 2 преобразования, текста в дробное число, и из дробного числа в целое:
text = "12.34"
num = float(text)
num = int(num)
num = num - 5
print num
Теперь когда мы научились преобразовать текст в числа, вернемся к Малевичу.
Мы остановились на:
size = raw_input("Ukazhite razmer kvadrata")
добавляем:
size = int(size)
получаем:
size = raw_input("Ukazhite razmer kvadrata")
size = int(size)
Отлично. Дальше мы уже умеем. Нарисуем одну строчку квадратиков:
size = raw_input("Ukazhite razmer kvadrata")
size = int(size)
i=size
while i>0:
print "#"
i=i-1
Запускаем. Так. Ну и какого хрена на экране столбик. С криками "глупый компьютер почему ты не делаешь то что я хочу, ведь я твой властелин" мы колошматим клавиатуру, выпиваем стакан воды и начинаем думать.Ну да, конечно, ведь команда print после каждого вывода переходит на новую строку. Во избежания этого добавим в конце команды print знак "," который сообщает что мы еще не закончили писать на этой строке, а в конце пустой print для того чтобы перейти на новую строку, и получим:
size = raw_input("Ukazhite razmer kvadrata")
size = int(size)
i=size
while i>0:
print "#",
i=i-1
print
Работает. Так, теперь берем весь этот кусок печатания строки, начиная с i=size, и заканчивая print, и вставляем его в цикл, который повторит вывод одной строки много раз и получим:size = raw_input("Ukazhite razmer kvadrata")
size = int(size)
j=size
while j>0:
i=size
while i>0:
print "#",
i=i-1
print
j=j-1
Великая победа альянса. (ц)
Домашнее задание:
1. Напишите программу которая рисует вот такой треугольник:
*
**
***
****
*****
2. А теперь стрелочку:
*
**
***
****
*****
****
***
**
*