|
| 1 | +"""Условия и циклы. |
| 2 | +
|
| 3 | +Продолжение. |
| 4 | +""" |
| 5 | + |
| 6 | +from typing import Union |
| 7 | + |
| 8 | +# + |
| 9 | +# Еще раз про условия с if |
| 10 | +# напишем программу, которая разобьет все числа на малые, |
| 11 | +# средние и большие |
| 12 | + |
| 13 | +# запросим число у пользователя и преобразуем в тип int |
| 14 | +x_var = int(input()) |
| 15 | + |
| 16 | +# и наконец классифицируем число |
| 17 | +if x_var < 10: |
| 18 | + print("Small number") |
| 19 | +elif x_var < 100: |
| 20 | + print("Medium number") |
| 21 | +else: |
| 22 | + print("Large number") |
| 23 | + |
| 24 | +# + |
| 25 | +# Несколько условий в одном выражении с операторами and или or |
| 26 | + |
| 27 | +x_var = int(input()) |
| 28 | + |
| 29 | +if x_var < 10 or x_var > 100: |
| 30 | + print("Small or large number") |
| 31 | +else: |
| 32 | + print("Medium number") |
| 33 | + |
| 34 | +# + |
| 35 | +# Проверка вхождения элемента в объект с in / not in |
| 36 | + |
| 37 | +# можно проверить вхождение слова в строку |
| 38 | +sentence = "To be, or not to be, that is the question" |
| 39 | +word = "question" |
| 40 | +if word in sentence: |
| 41 | + print(f"Слово {word} найдено.") |
| 42 | +# - |
| 43 | + |
| 44 | +# или отсутствие элемента в списке |
| 45 | +my_list = [1, 2, 3, 4, 5] |
| 46 | +number = 10 |
| 47 | +if number not in my_list: |
| 48 | + print(f"Элемент {number} отсутствует в списке.") |
| 49 | + |
| 50 | +# + |
| 51 | +# кроме того, можно проверить вхождение ключа и значения в словарь |
| 52 | + |
| 53 | +# возьмем очень простой словарь |
| 54 | +d_var = {"apple": 3, "tomato": 6, "carrot": 2} |
| 55 | +# вначале поищем яблоки среди ключей словаря |
| 56 | +if "apple" in d_var: |
| 57 | + print("Нашлись") |
| 58 | +# а затем посмотрим, нет ли числа 6 среди его значений |
| 59 | +# с помощью метода .values() |
| 60 | +if 6 in d_var.values(): |
| 61 | + print("Есть") |
| 62 | + |
| 63 | +# + |
| 64 | +# Циклы в питоне |
| 65 | +# цикл for |
| 66 | + |
| 67 | +# поочередно выведем элементы списка |
| 68 | +my_list = [1, 2, 3, 4, 5] |
| 69 | +for item in my_list: |
| 70 | + print(item) |
| 71 | + |
| 72 | +# + |
| 73 | +# создадим словарь, значениями которого будут списки из двух элементов |
| 74 | +# затем создадим две переменные-контейнера и применим метод .items() |
| 75 | + |
| 76 | +goods_dict: dict[str, list[Union[int, str]]] = { |
| 77 | + "apple": [3, "kg"], |
| 78 | + "tomato": [6, "pcs"], |
| 79 | + "carrot": [2, "kg"], |
| 80 | +} |
| 81 | + |
| 82 | +for key, value in goods_dict.items(): |
| 83 | + print(key, value) |
| 84 | +# - |
| 85 | + |
| 86 | +# возьмем только одну переменную и применим метод .values() |
| 87 | +for value in goods_dict.values(): |
| 88 | + # значение представляет собой список, выведем его первый |
| 89 | + # элемент с индексом [0] |
| 90 | + print(value[0]) |
| 91 | + |
| 92 | +# предположим, что у нас есть следующая база данных клиентов |
| 93 | +clients = { |
| 94 | + 1: {"name": "Анна", "age": 24, "sex": "male", "revenue": 12000}, |
| 95 | + 2: {"name": "Илья", "age": 18, "sex": "female", "revenue": 8000}, |
| 96 | +} |
| 97 | + |
| 98 | +for i, info in clients.items(): |
| 99 | + print(f"clientID: {i}") |
| 100 | + |
| 101 | + # во втором цикле возьмем информацию об этом клиенте (это тоже словарь) |
| 102 | + for field_name, field_value in info.items(): |
| 103 | + # и выведем каждый ключ (название поля) и значение (саму информацию) |
| 104 | + print(f"{field_name}: {field_value}") |
| 105 | + # добавим пустую строку после того, как выведем информацию об одном клиенте |
| 106 | + print() |
| 107 | + |
| 108 | +# создадим последовательность от 0 до 4 |
| 109 | +for i in range(5): |
| 110 | + print(i) |
| 111 | + |
| 112 | +# и от 0 до 5 с шагом 2 (то есть будем выводить числа через одно) |
| 113 | +for i in range(0, 6, 2): |
| 114 | + print(i) |
| 115 | + |
| 116 | +# возьмем месяцы года |
| 117 | +months = [ |
| 118 | + "January", |
| 119 | + "February", |
| 120 | + "March", |
| 121 | + "April", |
| 122 | + "May", |
| 123 | + "June", |
| 124 | + "July", |
| 125 | + "August", |
| 126 | + "September", |
| 127 | + "October", |
| 128 | + "November", |
| 129 | + "December", |
| 130 | +] |
| 131 | +# и продажи мороженого в тыс. рублей в каждый из месяцев |
| 132 | +sales = [120, 150, 170, 130, 160, 180, 200, 210, 190, 220, 230, 250] |
| 133 | +# задав последовательность через enumerate, |
| 134 | +for i, month in enumerate(months): |
| 135 | + # мы можем вывести каждый из элементов обоих списков в одном цикле |
| 136 | + print(f"{i}: {month}, {sales[i]}") |
| 137 | + |
| 138 | +# выведем числа от 1 до 10, но только четные |
| 139 | +for i in range(1, 11): |
| 140 | + # если число четное, выведем его |
| 141 | + if i % 2 == 0: |
| 142 | + print(i) |
| 143 | + |
| 144 | +# + |
| 145 | +# Последовательность в обратном порядке |
| 146 | +# Способ 1. Функция reversed() |
| 147 | + |
| 148 | +# создадим список |
| 149 | +my_list = [1, 2, 3, 4, 5] |
| 150 | + |
| 151 | +# выведем элементы списка в обратном порядке с помощью функции reversed() |
| 152 | +for item in reversed(my_list): |
| 153 | + print(item) |
| 154 | +# - |
| 155 | + |
| 156 | +# или с помощью range() |
| 157 | +for i in reversed(range(5)): |
| 158 | + print(i) |
| 159 | + |
| 160 | +# Способ 2. Указать −1 в качестве параметра шага |
| 161 | +# чтобы вывести 0, вторым параметром нужно указать -1 |
| 162 | +for i in range(4, -1, -1): |
| 163 | + print(i) |
| 164 | + |
| 165 | +# + |
| 166 | +# Способ 3. Функция sorted() |
| 167 | + |
| 168 | +for i in sorted(my_list, reverse=True): |
| 169 | + print(i) |
| 170 | + |
| 171 | +# + |
| 172 | +# Функция enumerate() |
| 173 | +# пусть дан список с днями недели |
| 174 | +days = [ |
| 175 | + "Понедельник", |
| 176 | + "Вторник", |
| 177 | + "Среда", |
| 178 | + "Четверг", |
| 179 | + "Пятница", |
| 180 | + "Суббота", |
| 181 | + "Воскресенье", |
| 182 | +] |
| 183 | + |
| 184 | +# выведем индекс (i) и сами элементы списка (day) |
| 185 | +# выведем индекс и элементы списка, но начнем с 1 |
| 186 | +for i, day in enumerate(days, start=1): |
| 187 | + print(i, day) |
| 188 | +# - |
| 189 | + |
| 190 | +# Цикл while |
| 191 | +# зададим начальное значение счетчика |
| 192 | +counter = 0 |
| 193 | +# пока счетчик меньше трех |
| 194 | +while counter < 3: |
| 195 | + print(f"Текущее значение счетчика: {counter}") |
| 196 | + # увеличим значение счетчика на единицу |
| 197 | + counter += 1 |
| 198 | + print(f"Новое значение счетчика: {counter}\n") |
| 199 | + |
| 200 | +# + |
| 201 | +# Break, continue |
| 202 | +# Оператор break |
| 203 | + |
| 204 | +# создадим константу для выхода из цикла и счетчик |
| 205 | +EXIT_NUMBER = 5 |
| 206 | +counter = 0 |
| 207 | +# создадим бесконечный цикл |
| 208 | +while True: |
| 209 | + # сделаем условие выхода из цикла |
| 210 | + if counter == EXIT_NUMBER: |
| 211 | + break |
| 212 | + counter += 1 |
| 213 | + print(counter) |
| 214 | + |
| 215 | +# + |
| 216 | +# Оператор continue |
| 217 | + |
| 218 | +# выведем числа от 1 до 10, но только четные c помощью оператора continue |
| 219 | +for i in range(1, 11): |
| 220 | + # если число нечетное, пропустим его |
| 221 | + if i % 2 != 0: |
| 222 | + continue |
| 223 | + # если число четное, выведем его |
| 224 | + print(i) |
0 commit comments