---
title: Программирование на Python
excerpt: Типы данный, cписки, if/else, for/while
date: '2023-09-26'
tags:
  - Информатика
  - Программирование
  - Python
---

<TableOfContents>

- [Урок 1. Типы данный](#урок-1)
- [Урок 1.1](#урок-11)
- [Урок 1.2](#урок-12)
- [Урок 2. Списки](#урок-2)
- [Урок 3. if/else](#урок-3)
- [Урок 4. for/while](#урок-4)

</TableOfContents>

## Урок 1

## Теория: 
В Python существует несколько основных типов данных. Вот некоторые из них:

**Целые числа (int)**: Представляют целые числа, например, 5, -10, 1000.

```python
  
  x = 5
  y = -10
  z = 1000

```

**Задачи для самостоятельного решения**

1. Вычислите сумму всех целых чисел от 1 до заданного пользователем числа.
2. Найдите наибольший общий делитель (НОД) двух целых чисел.
3. Проверьте, является ли заданное число простым (не имеет делителей, кроме 1 и самого себя).

---

**Вещественные числа (float)**: Используются для представления чисел с плавающей запятой, например, 3.14, 2.0, -0.5.

```python
  
  pi = 3.14159
  temperature = 23.5
  rate = -0.05

```

**Задачи для самостоятельного решения**

1. Вычислите площадь круга с заданным радиусом.
2. Рассчитайте среднее арифметическое списка оценок студентов (вещественные числа).
3. Преобразуйте температуру из градусов Цельсия в градусы Фаренгейта и наоборот.

---

**Строки (str)**: Используются для представления текстовых данных, заключаются в одинарные или двойные кавычки, например, "Hello, World!", 'Python'.

```python
  
  message = "Привет, мир!"
  name = 'Python'

```

**Задачи для самостоятельного решения**

1. Подсчитайте количество гласных букв в заданной строке.
2. Проверьте, является ли строка палиндромом (читается одинаково справа налево и слева направо).
3. Замените все пробелы в строке на дефисы.

---

**Списки (list)**: Позволяют хранить упорядоченные коллекции элементов. Элементы списка могут быть разных типов, и они индексируются с помощью чисел, начиная с 0.

```python
  
    fruits = ["яблоко", "банан", "апельсин"]
    numbers = [1, 2, 3, 4, 5]
    mixed = [1, "hello", 3.14]

```
```python

    S = 'Spam'
    print(len(S))
    # 4
    print(S[0])
    # S
    print(S[l])
    # p

```
В Python мы можем также индексировать в обратном направлении, с конца, т.е. положительные индексы считаются слева, а отрицательные — справа.
По умолчанию левая граница среза принимается равной нулю, а правая — длине нарезаемой последовательности. Это приводит к нескольким распространенным вариантам применения:
```python

    S = 'Spam'
    print(len(S))
    # 4
    
    print(S[-1]) # Последний элемент с конца в S
    # m

    print(S[-2]) # Второй элемент с конца в S
    # a

    print(S[len(S)-1]) # Отрицательная индексация, сложный путь
    # m
    print(S[1:3]) # Срез S со смещения 1 до 2 (не 3)
    # 'pa'

    print(S[1:1]) # Все после первого элемента (1: len (S))
    # 'pam'
    
    print(S[0:3]) # Все кроме последнего элемента
    # Spa

    print(S[:3]) То же, что и S[0:3]
    # Spa

    print(S[:-l]) # Снова все кроме последнего элемента, но проще (0:-1)
    # Spa
    
    print(S[:]) # Вся строка S как копия верхнего уровня (0: len (S))
    # Spam

    print(S+'xyz') # Конкатенация
    # Spamxyz

    print(S*8) # Повторение
    # SpamSpamSpamSpamSpamSpamSpamSpam

```

Каждый объект в Python классифицируется как неизменяемый (немодифицируемый) или нет. Что касается основных типов, то числа, строки и кортежи неизменяемы,
а списки, словари и множества — нет; они могут свободно модифицироваться на месте, как большинство новых объектов, которые вы будете создавать с помощью классов.
Такое отличие оказывается критически важным в работе Python, но мы пока не в состоянии полностью исследовать его влияние. 

Помимо прочего неизменяемость можно использовать для гарантирования того, что объект остается постоянным на протяжении всей программы; значения изменяемых объектов способны меняться в любой
момент и в любом месте (ожидаете вы этого или нет).

```python
    S[0] = 'z'
    print(S)
    # TypeError: 'str' object does not support item assignment

    S = 'z' + S[1:] # Но мы можем выполнять выражения для создания новых объектов
    print(S)
    # 'zpam’

```

Строго говоря, текстовые данные можно изменять на месте, если развернуть их в список индивидуальных символов и объединить вместе с пустым разделителем или применить более новый тип bytearray, доступный в Python 2.6, 3.0 и последующих версиях:

```python
    S = 'shrubbery'
    L = list(S) # Развернуть в список: [. . . ]
    
    print(L)
    # ['s', 'h', 'г', 'u', 'b', 'b', 'e', 'r', 'y'J

    L[1] = 'с' # Изменить на месте
    ''.join(L) # Объединить с пустым разделителем
    print(L)
    # scrubbery
    
    B = bytearray(b'spam')  # Гибрид байтов/списка
    B.extend(b'eggs')  # b необходимо в Python З.Х, но не в Python 2.Х
    print(B)  # B[i] = ord(x) тоже здесь работает
    # bytearray(b’spameggs’)
    print(B.decode())  # Преобразовать в обычную строку
    # spameggs

```
Cтроковый метод find представляет собой операцию поиска подстроки (она возвращает смещение указанной подстроки или -1, если подстрока не найдена), а строковый метод replace выполняет глобальный поиск и замену; оба метода
действуют на объекте, к которому они присоединены и вызваны:

```python

    S = 'Spam'
    print(S.find('pa')) # Найти смещение подстроки в S
    # 1
    
    print(S)
    # Spam
    
    S.replace ('pa', 'XYZ') # Заменить вхождения подстроки в S другой подстрокой
    # SXYZm

    print(S)
    # Spam

```


**Задачи для самостоятельного решения**

1. Найдите сумму всех элементов списка целых чисел.
2. Удалите дубликаты из списка.
3. Отсортируйте список в порядке возрастания или убывания.

---

**Кортежи (tuple)**: Похожи на списки, но неизменяемы (элементы кортежа нельзя изменять после создания).

```python
  
  coordinates = (3, 4)
  colors = ("красный", "зеленый", "синий")

```

**Задачи для самостоятельного решения**

1. Найдите индекс заданного элемента в кортеже.
2. Посчитайте количество вхождений определенного значения в кортеже.
3. Создайте новый кортеж, объединив два существующих кортежа.

---

**Словари (dict)**: Используются для хранения пар ключ-значение. Ключи должны быть уникальными, и они позволяют быстро получать доступ к значениям.

```python
  
  person = {"имя": "Иван", "возраст": 30, "город": "Москва"}
  scores = {"математика": 95, "физика": 88, "химия": 75}

```

**Задачи для самостоятельного решения**

1. Подсчитайте количество вхождений каждого элемента в списке и сохраните результаты в словаре.
2. Извлеките значение по заданному ключу из словаря и выведите его.
3. Объедините два словаря в один.

---

**Множества (set)**: Представляют неупорядоченные коллекции уникальных элементов. Множества полезны, когда нужно убрать дубликаты из коллекции.

```python
  
  unique_numbers = {1, 2, 3, 4, 5}
  vowels = {'a', 'e', 'i', 'o', 'u'}

```

**Задачи для самостоятельного решения**

1. Найдите пересечение двух множеств.
2. Проверьте, является ли одно множество подмножеством другого.
3. Удалите дубликаты из списка, используя множество.

---

**Логический тип (bool)**: Имеет два значения: True и False. Используется для представления логических истин и ложных значений.

```python
  
  is_true = True
  is_false = False

```
**Задачи для самостоятельного решения**

1. Проверьте, является ли заданное число четным (True) или нечетным (False).
2. Проверьте, является ли строка пустой (False) или не пустой (True).
3. Сравните две переменные и верните результат сравнения в виде логического значения.

---

**NoneType (None)**: Используется для представления отсутствия значения или нулевого значения.

```python
  
empty_value = None

```
**Задачи для самостоятельного решения**

1. Напишите функцию, которая ничего не возвращает (возвращает None).
2. Проверьте, имеет ли переменная значение None и выполните действие в зависимости от этого.
3. Используйте None для инициализации переменной, которая будет заполняться данными позже.

---

**Байтовые строки (bytes) и байтовые массивы (bytearray)**: Используются для работы с байтовыми данными, например, при чтении и записи файлов.

```python
  
  data = b'hello'
  byte_array = bytearray([65, 66, 67])

```

**Задачи для самостоятельного решения**

--- 

**Объекты пользовательских классов**: Вы также можете создавать свои собственные типы данных, определяя классы.

```python
  
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person1 = Person("Анна", 25)
person2 = Person("Иван", 30)

```

**Задачи для самостоятельного решения**

---

### Cписок функций необходимых для решения данных задач
1. Функция max() для поиска максимального значения.
2. Оператор % для вычисления остатка от деления.
3. Оператор % для проверки четности/нечетности числа.
4. Оператор * для умножения двух чисел.
5. Оператор == для проверки равенства числа нулю.
6. Функция len() для получения длины строки или списка.
7. Оператор // для целочисленного деления.
8. Оператор != для проверки неравенства двух значений.
9. Функция round() для округления числа до определенного количества знаков после запятой.
10. Оператор ** для возведения числа в степень.


## Урок 1.1

## Задания для самостоятельной работы

1. Найти максимальное из двух целых чисел.
2. Вычислить остаток от деления на 10 заданного трехзначного числа.
3. Проверить, является ли заданное число нечетным.
4. Вычислить произведение двух целых чисел.
5. Проверить, является ли заданное число равным нулю.

### Пример решения

1. Найти минимальное из двух целых чисел.

```python

def min_integer(a, b):
    return min(a, b)

print(min_integer(7, 12)) # Output: 7

```

2. Вычислить остаток от деления на 10 заданного трехзначного числа.

```python

def remainder_10(n):
    return n % 10

print(remainder_10(456)) # Output: 6

```

3. Проверить, является ли заданное число нечетным.


```python

def is_odd(n):
    return n % 2 != 0

print(is_odd(9)) # Output: True

```

4. Вычислить произведение двух целых чисел.

```python

def multiply(a, b):
    return a * b

print(multiply(5, 8)) # Output: 40

```

5. Проверить, является ли заданное число равным нулю.

```python

def is_zero(n):
    return n == 0

print(is_zero(0)) # Output: True

```

## Урок 1.2

## Задания для самостоятельной работы

1. Вычисление площади квадрата по длине стороны.
2. Вычисление периметра прямоугольника по длинам двух сторон.
3. Вычисление объема параллелепипеда по длинам трех его сторон.
4. Вычисление среднего арифметического двух чисел.
5. Вычисление площади круга по радиусу.

### Пример решения

1. Найти минимальное из двух целых чисел.

```python

def parallelepiped_volume(a, b, с):
    return a * b * c

print(min_integer(2, 3, 4)) # Output: 24

```

2. Вычисление периметра прямоугольника по длинам двух сторон.

```python

def parallelepiped_volume(a, b, с):
    return a * b * c

print(min_integer(2, 3, 4)) # Output: 24

```

## Урок 2

### Списки
### Теория 

Список в Python - это упорядоченный набор элементов, каждый из которых имеет свой номер, или индекс, позволяющий быстро получить к нему доступ. Нумерация элементов в списке начинается с 0.

Списки в Python используются для хранения и работы с данными. Они могут содержать элементы любого типа, включая числа, строки, словари, другие списки и т.д.

Создать список в Python можно несколькими способами:

### С помощью квадратных скобок:

```python

my_list = [1, 2, 3]

```

### С помощью функции list:

```python

my_list = list([1, 2, 3])

```

### С помощью оператора range:

```python

my_list = list(range(10))

```

Доступ к элементам списка можно получить с помощью индекса:
```python

my_list = [1, 2, 3]

print(my_list[0])    # 1
print(my_list[1])    # 2
print(my_list[2])    # 3

```
Элементы списка можно добавлять, удалять, изменять и сортировать. Для этого используются методы и функции списков.

Вот некоторые из наиболее распространенных методов списков в Python:

    * append() - добавляет элемент в конец списка
    * insert() - вставляет элемент в список в указанной позиции
    * extend() - добавляет элементы из одного списка в другой
    * pop() - удаляет элемент из списка в указанной позиции
    * remove() - удаляет первый элемент из списка, равный указанному
    * sort() - сортирует список в порядке возрастания

Вот пример использования методов списков в Python:

```python

my_list = [1, 2, 3]

my_list.append(4)    # [1, 2, 3, 4]
my_list.insert(1, 5)  # [1, 5, 2, 3, 4]
my_list.extend([6, 7])  # [1, 5, 2, 3, 4, 6, 7]

my_list.pop()    # 4
my_list.remove(2)  # [1, 5, 3, 4]
my_list.sort()    # [1, 3, 4, 5]

```
Списки в Python - это мощный инструмент, который может использоваться для решения широкого круга задач.

## Практика:

## Задания для самостоятельной работы

1. Создать список чисел от 1 до 100 и найти среднее значение.
2. Создать список чисел и найти все четные числа.
3. Создать список чисел и отсортировать его в порядке возрастания.
4. Создать список чисел и найти все числа, которые делятся на 3.
5. Создать список чисел и найти произведение всех элементов списка.

### Пример решения

0. Создать список чисел и найти количество элементов списка, равных 0.

```python

  # Создаем список чисел
  numbers = [0, 2, 0, 4, 0, 6, 8, 0]

  # Используем метод count() для подсчета количества нулей в списке
  count_of_zeros = numbers.count(0)

  # Выводим результат
  print(count_of_zeros)

```
без функции count

```python
# Создаем список чисел
numbers = [0, 2, 0, 4, 0, 6, 8, 0]

# Инициализируем переменную для подсчета нулей
count_of_zeros = 0

# Используем цикл для прохода по каждому элементу списка
for number in numbers:
    # Проверяем, является ли текущий элемент равным 0
    if number == 0:
        # Если да, увеличиваем счетчик на 1
        count_of_zeros += 1

# Выводим результат
print("Количество элементов списка, равных 0:", count_of_zeros)

```

## Урок 3
### Теория 
Условные операторы if и else в Python позволяют программе принимать решения на основе определенных условий. 
Они позволяют выполнять определенный блок кода, если условие истинно, и другой блок кода, если условие ложно.

Синтаксис оператора if выглядит следующим образом:

```python
if условие:
    блок кода
```
Если условие истинно, то выполняется блок кода, который находится под оператором if. Если же условие ложно, то этот блок кода будет пропущен.

Оператор else используется для выполнения блока кода, если условие в операторе if ложно. Синтаксис оператора else выглядит следующим образом:

```python
if условие:
    блок кода
else:
    блок кода
```

Оператор elif (сокращение от else if) используется в условных операторах вместе с операторами if и else для проверки дополнительных условий, если первое условие ложно. 

Синтаксис оператора elif выглядит следующим образом:

```python
if условие1:
    блок кода1
elif условие2:
    блок кода2
else:
    блок кода3
```
Если условие1 ложно, то проверяется условие2. Если оно истинно, то выполняется блок кода2. Если же и это условие ложно, то выполняется блок кода3, который находится под оператором else. 

Таким образом, оператор elif позволяет программе проверять несколько условий и выбирать соответствующий блок кода для выполнения в зависимости от результатов проверки.

## Задания для самостоятельной работы
1. Напишите программу, которая проверяет, является ли число четным или нечетным.
2. Напишите программу, которая проверяет, является ли год високосным или нет.
3. Напишите программу, которая проверяет, является ли треугольник прямоугольным или нет.
4. Напишите программу, которая проверяет, является ли число положительным, отрицательным или нулем.
5. Напишите программу, которая проверяет, является ли символ гласной буквой или согласной.

### Пример решения

1. Напишите программу, которая проверяет, является ли число четным или нечетным.

```python

def even_number(a):
    if a % 2 == 0:
        return "Число четное"
    else:
        return "Число нечетное"


print(even_number(int(input("Введите число: "))))

```

2. Напишите программу, которая проверяет, является ли год високосным или нет.

```python

def is_leap_year(year):
    if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
        return True
    else:
        return False

year = int(input("Введите год: "))

if is_leap_year(year):
    print(f"{year} - високосный год")
else:
    print(f"{year} - не високосный год")

```

3. Напишите программу, которая проверяет, является ли треугольник прямоугольным или нет.

Для проверки, является ли треугольник прямоугольным, можно воспользоваться теоремой Пифагора. Треугольник считается прямоугольным, если сумма квадратов длин двух коротких сторон равна квадрату длины самой длинной стороны. Вот программа на Python, которая проверяет это условие:

```python

def is_right_triangle(a, b, c):
    # Сортируем стороны треугольника по длине
    sides = sorted([a, b, c])

    # Проверяем условие Пифагора
    if sides[0]**2 + sides[1]**2 == sides[2]**2:
        return True
    else:
        return False

# Вводим длины сторон треугольника
a = int(input("Введите длину первой стороны: "))
b = int(input("Введите длину второй стороны: "))
c = int(input("Введите длину третьей стороны: "))

if is_right_triangle(a, b, c):
    print("Треугольник является прямоугольным.")
else:
    print("Треугольник не является прямоугольным.")

```


4. Напишите программу, которая проверяет, является ли число положительным, отрицательным или нулем.

```python

# Ввод числа с клавиатуры
number = int(input("Введите число: "))

if number > 0:
    print("Число положительное")
elif number < 0:
    print("Число отрицательное")
else:
    print("Число равно нулю")

```

5. Напишите программу, которая проверяет, является ли символ гласной буквой или согласной.

```python

def is_vowel(char):
  """Проверяет, является ли символ гласной буквой.

  Args:
    char: Символ, который необходимо проверить.

  Returns:
    True, если символ является гласной буквой, False в противном случае.
  """

  if char in "ауоиэы":
    return True
  else:
    return False

char = input("Введите символ: ")
if is_vowel(char):
    print("Символ является гласной буквой.")
else:
    print("Символ является согласной буквой.")
```


## Домашнее задание
1. Напишите программу, которая принимает баллы (от 0 до 100) и выводит оценку (A, B, C, D или F), в зависимости от диапазона баллов.
2. Запросите у пользователя номер месяца и определите, к какому сезону он относится (зима, весна, лето или осень).
3. Напишите программу для кинотеатра, которая определяет стоимость билета в зависимости от возраста посетителя и времени сеанса. Для детей (0-12 лет) билет стоит 5 долларов, для взрослых (13-64 лет) - 10 долларов, для пенсионеров (65+) - 7 долларов. Если сеанс проходит после 18:00, к цене добавляется 2 доллара.
4.Попросите пользователя ввести длины трех сторон треугольника и определите его тип (равносторонний, равнобедренный или разносторонний).
5. Создайте функцию, которая принимает номер месяца в качестве аргумента и возвращает соответствующий сезон. Затем напишите программу, которая использует эту функцию для определения времени года на основе введенного пользователем номера месяца.

Решенные задания нужно принести на USB-флешкарте, на уроке мы будем их проверять.


## Урок 4
### Теория 
Функция for в языке Python представляет собой цикл, который используется для выполнения повторяющихся операций над элементами в итерируемом объекте, таком как список, кортеж, строка или другие типы данных, которые можно перебирать. Функция for в Python имеет следующий синтаксис:

Синтаксис функции for выглядит следующим образом:

```python
for элемент in итерируемый_объект:
    # выполняемые операции
```
Здесь:

    элемент - это переменная, которая будет поочередно принимать значения из итерируемого объекта на каждой итерации цикла.
    итерируемый_объект - это объект, который может быть перебран, такой как список, кортеж, строка и другие.

Пример использования цикла for для перебора элементов списка:

```python
my_list = [1, 2, 3, 4, 5]

for num in my_list:
    print(num)
```

Результат выполнения этого кода будет следующим:

```python
    1
    2
    3
    4
    5
```
Цикл for также может использоваться с функциями range() и enumerate() для более сложных итераций и доступа к индексам элементов, соответственно.

Функция range() в Python представляет собой встроенную функцию, которая используется для создания последовательности чисел в определенном диапазоне. Она может быть полезной при выполнении итераций в циклах for или для создания списков чисел для других целей. Функция range() имеет следующий синтаксис:

```python
    range([начало], конец, [шаг])
```

Где:

    * начало (необязательный параметр) - начальное значение последовательности. Если не указано, по умолчанию используется значение 0.
    * конец - значение, до которого будет создана последовательность. Важно отметить, что конечное значение не включается в последовательность. То есть, если конец 
    равен 10, последовательность будет включать числа от 0 до 9.
    * шаг (необязательный параметр) - шаг или инкремент между числами в последовательности. По умолчанию шаг равен 1.

Примеры использования функции range():

Создание последовательности чисел от 0 до 4 (не включая 4) с шагом 1:

```python
    for i in range(5):
        print(i)
    # Результат
    # 0
    # 1
    # 2
    # 3
    # 4
```

Создание последовательности чисел от 1 до 10 (не включая 10) с шагом 2:

```python
    for i in range(1, 10, 2):
        print(i)
    # Результат
    # 1
    # 3
    # 5
    # 7
    # 9
```

## Задания для самостоятельной работы
1. Напишите программу, вывести числа от N до 1 в обратном порядке.
2. Напишите программу, для подсчита сумму всех четных чисел в заданном диапазоне
3. Напишите программу, которая выведет таблицу умножения для заданного числа.
4. Напишите программу, для нахождения всех делителей заданного числа.
5. Напишите программу, подсчитает количество четных и нечетных чисел в заданном диапазоне.

### Пример решения

0. Вычислить факториал заданного числа.

```python

n = 5
factorial = 1
for i in range(1, n + 1):
    factorial *= i

print(f"Факториал числа {n} равен {factorial}")

# Факториал числа 5 равен 120
# Факториал числа 5: 5! = 5 * 4 * 3 * 2 * 1 = 120

```

## Домашнее задание
1. Напишите программу, которая выводит на экран все нечетные числа от 1 до N.
2. Напишите программу, которая выводит на экран все простые числа от 2 до N.
3. Напишите программу, которая выводит на экран таблицу умножения от 1 до 10.
4. Напишите программу, которая выводит на экран все квадраты чисел от 1 до 100.
5. Напишите программу, которая выводит на экран все кубы чисел от 1 до 100.

Решенные задания нужно принести на USB-флешкарте, на уроке мы будем их проверять.

[На главную](/)