owned this note
owned this note
Published
Linked with GitHub
# Занятие 2
---
## Практика рисования
----
### шаблон для рисования
```
from tkinter import *
window = Tk()
c = Canvas(window, width=500, height=500, bg='white')
c.pack()
# Команды рисования
window.mainloop()
```
----
### Задача 1

----
#### Задача 2

----
### Задача 3

----
### Задача 4

----
### Задача 5
Доработайте программу рисования олимпийского флага так, чтобы флаг увеличился в два раза.
----
### Задача 6
Доработайте программу рисования лестницы так, чтобы ступеньки были закрашены разными цветами.
----
### Задача 7

----
### Задача 8

---
## Идентификаторы
----
Компьютер, для выполнения программ, хранит информацию в памяти в виде отдельных элементов, которые могут быть числами, строками, отдельными символами и т.д. и у каждого подобного элемента должен быть свой идентификатор, по которому компьютер сможет к нему обращаться.
По своей сути идентификатор - имя программного элемента данных.
----
Есть несколько правил, которые необходимо соблюдать, чтобы создать идентификатор Python.
* Вы не можете использовать зарезервированные Ключевые слова как имя идентификатора.
* Идентификатор Python может содержать буквы в маленьком случае (A-Z), верхний регистр (A-Z), цифры (0-9) и подчеркивание (_).
----
* Имя идентификатора не может начать с цифры.
* Идентификатор Python не может содержать только цифры.
* Имя идентификатора Python может начать с подчеркивания.
* Нет предела на длине имени идентификатора.
* Имена идентификатора Python чувствительны к регистру.
----
Давайте посмотрим на несколько примеров действительных идентификаторов Python.
* AB10C : содержит только буквы и цифры
* abc_de : содержит все действительные символы
* _: Удивительно, но да, подчеркивание – это действительный идентификатор
* _abc : идентификатор может начать с подчеркивания
----
И недействительных идентификаторов
* 99 : Идентификатор не может быть только цифрами
* 9abc : Идентификатор не может начать с номера
* x + y : Единственный специальный символ разрешен – подчеркивание
* for : это зарезервированное ключевое слово
----
Мы можем использовать функцию isidentifier(), чтобы проверить, действительно ли имя идентификатора или нет. Но этот метод не принимает зарезервированные ключевые слова во внимание. Итак, мы можем использовать эту функцию с ключевым словом мы должны использовать iskeyword() Чтобы проверить, действительно ли имя или нет.
```
print("abc".isidentifier()) # True
print("99a".isidentifier()) # False
print("_".isidentifier()) # True
print("for".isidentifier()) # True - wrong output
```
----
функция, учитывающая ключевые слова
```
def is_valid_identifier(s):
return s.isidentifier() and not keyword.iskeyword(s)
print(is_valid_identifier("for")) # False
```
----
Идентификаторы чувствительны к регистру
```
I_am = 1
i_am = 2
I_AM = 3
print(I_am, i_am, I_AM)
```
----
Константы. Неизменяемые значения.
В отличие от некоторых других языков, в Питоне нет возможности объявить неизменяему переменную.
Для обозначения переменных, значения которых не должны меняться существует договорённость именовать их прописными буквами.
```
MY_CONSTANT = 'моя «константа»'
MY_CONSTANT_2 = 2022
```
----
Переменные содержат данные. Благодаря этому к ним можно обращаться, заново использовать, вызывать, назначать и так далее.
```
I_am = 1
my_string = 'some string'
I_am = 3
print(I_am, my_string)
```
---
## Типы данных
Если достаточно формально подходить к вопросу о типизации языка Python, то можно сказать, что он относится к языкам с неявной сильной динамической типизацией.
Неявная типизация означает, что при объявлении переменной вам не нужно указывать её тип, при явной – это делать необходимо.Также языки бывают с динамической и статической типизацией. В первом случае тип переменной определяется непосредственно при выполнении программы, во втором – на этапе компиляции. Как уже было сказано Python – это динамически типизированный язык
----
К основным встроенным типам относятся:
* None (неопределенное значение переменной)
* Логические переменные (Boolean Type)
* Числа (Numeric Type)
* int – целое число
* float – число с плавающей точкой
* complex – комплексное число
* Списки (Sequence Type)
* list – список
* tuple – кортеж
* range – диапазон
----
* Строки (Text Sequence Type )
* str
* Бинарные списки (Binary Sequence Types)
* bytes – байты
* bytearray – массивы байт
* memoryview – специальные объекты для доступа к внутренним данным объекта через protocol buffer
* Множества (Set Types)
* set – множество
* frozenset – неизменяемое множество
* Словари (Mapping Types)
* dict – словарь
----
Пример вычисления с числами:
```
print('результат:', 18-2-2+(7**3)%3)
```
---
## Ввод значений с клавиатуры
----
Получение и обработка информации — один из важнейших элементов любого языка программирования, особенно если речь идет о получении информации от пользователей.
Python, будучи медленным относительно таких языков, как C или Java, предлагает продвинутые инструменты для получения, анализа и обработки данных от конечного пользователя.
----
Для получения информации с клавиатуры в Python есть функции input()
```
name = input('Ваше имя?')
print('Добрый день', name)
```
----
Чтобы получить число, нам нужно провести операцию по смене типа данных
```
num = int(input('Ваше число?'))
print('Вы ввели', num)
```
---
## Практика
----
### Задача 1
Напишите программу, которая считывает три числа и выводит их сумму. Каждое число записано в отдельной строке.
----
### Задача 2
Напишите программу, которая считывает длины двух катетов в прямоугольном треугольнике и выводит его площадь. Каждое число записано в отдельной строке.

----
### Задача 3
n школьников делят k яблок поровну, неделящийся остаток остается в корзинке. Сколько яблок достанется каждому школьнику? Сколько яблок останется в корзинке? Программа получает на вход числа n и k и должна вывести искомое количество яблок (два числа).
----
### Задача 4
Дано число n. С начала суток прошло n минут. Определите, сколько часов и минут будут показывать электронные часы в этот момент. Программа должна вывести два числа: количество часов (от 0 до 23) и количество минут (от 0 до 59). Учтите, что число n может быть больше, чем количество минут в сутках.
----
### Задача 5
Напишите программу, которая приветствует пользователя, выводя слово Hello, введенное имя и знаки препинания по образцу:
`Hello, Harry!`
----
### Задача 6
Напишите программу, которая считывает целое число и выводит текст, аналогичный приведенному в примере (пробелы важны!).
The next number for the number 1534 is 1535.
The previous number for the number 1534 is 1533.
----
### Задача 7
В школе решили набрать три новых математических класса. Так как занятия по математике у них проходят в одно и то же время, было решено выделить кабинет для каждого класса и купить в них новые парты. За каждой партой может сидеть не больше двух учеников. Известно количество учащихся в каждом из трёх классов. Сколько всего нужно закупить парт чтобы их хватило на всех учеников? Программа получает на вход три натуральных числа: количество учащихся в каждом из трех классов.
----
### Задача 8
Обувная фабрика собирается начать выпуск элитной модели ботинок. Дырочки для шнуровки будут расположены в два ряда, расстояние между рядами равно a, а расстояние между дырочками в ряду b. Количество дырочек в каждом ряду равно N. Шнуровка должна происходить элитным способом “наверх, по горизонтали в другой ряд, наверх, по горизонтали и т.д.” (см. рисунок). Кроме того, чтобы шнурки можно было завязать элитным бантиком, длина свободного конца шнурка должна быть l. Какова должна быть длина шнурка для этих ботинок?
Программа получает на вход четыре натуральных числа a, b, l и N - именно в таком порядке - и должна вывести одно число - искомую длину шнурка.