Шпаргалка по Python
- Запрос данных у пользователя, и вывод на экран
- Обработка числового ввода
- Проверка простого условия
- Проверка нескольких условий
- Проверка сложного условия
- Работа со списком
- Циклы
- Интерфейс
Тут я собрал выжимку из прошлого семестра с инфой, которую можно быстро подглядеть если что забыли.
Запрос данных у пользователя, и вывод на экран
x = input("Как вас зовут? ")
print(f"Привет, {x}") # вместо x подставляется имя
или, например, так:
x = input("Введите значение") # запросили
print("Вы ввели ", x, " число") # ну а теперь выводим
# то же самое, но в более читабельном виде
# в этом случае ставим f перед кавычкой,
# а "х" оборачиваем в фигурные скобки
print(f"Вы ввели {x} число")
вот так работает:
Обработка числового ввода
если работаем с числами, то должны не забывать про конвертацию
x = input("Введите значение: ")
x = int(x) # превращаем в число, если не превратить, то работать с числами не получится
sum = x + x
print(f"Сумма {x} + {x} = {sum}")
вот так оно работает
а вот если не превратить в число, то есть сделать вот так
x = input("Введите значение: ")
sum = x + x
print(f"Сумма {x} + {x} = {sum}")
вот что получится:
то есть, без преобразования в число, складываются строки что эквивалентно склеиванию и совсем не то что нам надо
Проверка простого условия
Если нам надо проверить ввел ли пользователь, то что нам хочется, мы используем конструкцию if
x = input("Подтвердите что вы не робот? ")
if x == "Я не робот":
print("Проходите! =)")
else:
print("Извините, вход только для людей")
двойное равно позволяет на сравнить введение значение на совпадение с каким-то другим
Проверка нескольких условий
Если хочется проверить больше чем одно условие, то используем elif
x = input("Подтвердите что вы не робот? ")
if x == "Я человек":
print("Проходите! =)")
elif x == "У меня лапки":
print("Мурмяу :3")
elif x == "V●ᴥ●V":
print("Кто хороший мальчик?")
else:
print("Извините, вход только для людей")
в этом случае сработает первое выполнившиеся условие
Проверка сложного условия
Иногда хочется проверить сразу несколько условий, допустим у нас есть число, и мы хотим проверить попадает ли оно в промежуток.
В этом случае мы пишем несколько условий и объединяем их через and
x = input("Введите число: ")
x = int(x) # не забываем превратить ввод в число
if x >= 0 and x <= 10:
print(f"Число {x} в промежутке от 0 до 10")
else:
print(f"Число {x} ВНЕ промежутка от 0 до 10")
Работа со списком
Вывод элементов по индексу
Список, это замечательный способ работы с набором однотипных объектов
array = ['Зима', 'Весна', 'Лето', 'Осень']
# вывод конкретного элемента списка по номеру
print(array[0]) # нумерация с нуля, поэтому array[0] выдаст Зима
print(array[1]) # напечатает Весна
print(array[2]) # напечатает Лето
print(array[3]) # напечатает Осень
можно, например, запрашивать номер у пользователя и по этому номеру выводить элемент:
array = ['Зима', 'Весна', 'Лето', 'Осень']
x = input("введите номер элемента: ")
x = int(x) # конвертим в число
print(array[x])
еще раз обратим внимание что запрашиваем 2 элемент, а получаем в ответ третий, это потому что нумерацию с нуля.
Если хочется работать с более привычной естественной нумерацией, то надо вычитать из x единицу
array = ['Зима', 'Весна', 'Лето', 'Осень']
x = input("введите номер элемента: ")
x = int(x) # конвертим в число
print(array[x - 1]) # вычитаем единицу
Проверка индекса на корректность
Часто бывает важно проверить что элемент по заданному индексу существует. Например, в списке из четырех элементов нельзя запросить 5-ый элемент, на самом деле нельзя запросить даже элемент с индексом 4 потому что индексация с нуля, и для списка из четырех элементов допустимыми являются только индексы 0, 1, 2, 3
Вот что будет если запросить некорректный индекс
поэтому, запрашивая очередной элемент, важно проверить, что он не выходит за границы:
array = ['Зима', 'Весна', 'Лето', 'Осень']
x = input("введите номер элемента: ")
x = int(x) # конвертим в число
if x >= 0 and x < len(array):
print(array[x])
else:
print("Вы ввели некорректный индекс")
len(array) – это специальная функция которая позволяет узнать количество элементов в списке
если же ввести корректный номер, то все работает как обычно
Циклы
Циклы это штука непосредственно связанная со списками. Если например есть список
array = ['Зима', 'Весна', 'Лето', 'Осень']
и хочу я вывести на экран его элементы так чтобы каждый был в новой строке, то я могу сделать так:
array = ['Зима', 'Весна', 'Лето', 'Осень']
print(array[0])
print(array[1])
print(array[2])
print(array[3])
и в принципе ок, но это только пока элементов мало, а если их 100 или 1000, тогда как-то писать стопятсот строк уже не весело. Поэтому человечество придумало циклы.
Работают они так, мы просто берем и заменяем наш код на такой:
array = ['Зима', 'Весна', 'Лето', 'Осень']
for el in array:
print(el)
получаем тоже самое в ответ:
что можно прочитать как для каждого элемента el
в массиве выполни команду print(el)
и таким образом мне уже не важно сколько у меня элементов 10 или миллиард.
Иногда хочется вывести номер элемента, я в прошлом семестре показывал немного кривой способ через использование index
типа так:
array = ['Зима', 'Весна', 'Лето', 'Осень']
for el in array:
print(array.index(el), el)
на самом деле это не очень эффективный способ, так как он каждый раз ищет элемент в исходным массиве и выводит его номер.
Есть более грамотный способ, через использование функции enumerate:
array = ['Зима', 'Весна', 'Лето', 'Осень']
for i, el in enumerate(array):
print(i, el)
тот же результат
но код более компактный, функция enumerate она внутри себя проходит по списку array и сопоставляет каждому элементу его номер. И в результате возвращает два значения.
Первое мы кладем в переменную i, а второе в переменную el
ну а так как это простые переменные мы можем делать с этим что хотим:
например, вывести только значения стоящие на четных позициях:
array = ['Зима', 'Весна', 'Лето', 'Осень']
for i, el in enumerate(array):
if i % 2 == 0:
print(i, el)
ой, только не забываем, что нумерация с нуля и поэтому надо по идее проверять номер на нечетность чтобы вывести четный элемент:
array = ['Зима', 'Весна', 'Лето', 'Осень']
for i, el in enumerate(array):
if i % 2 == 1:
print(i, el)
но есть более прикольный способ решения этой проблемы, функции enumerate можно передать с какого числа начать, вот так:
array = ['Зима', 'Весна', 'Лето', 'Осень']
for i, el in enumerate(array, 1):
print(i, el)
и тогда четную позицию можно уже проверять по-человечески
array = ['Зима', 'Весна', 'Лето', 'Осень']
for i, el in enumerate(array, 1):
if i % 2 == 0:
print(i, el)
вот такие дела =)
Интерфейс
Болванка под любой интерфейс
import requests
from tkinter import *
from tkinter import ttk # импорт для расширеных компонент tk
from PIL import Image, ImageTk # импорт для работы с картинками
class UI():
def __init__(self, gui):
gui.geometry("400x230")
gui = Tk()
UI(gui)
gui.mainloop()
Функция для создания поля для ввода с лейблом
def create_entry(x, y, label_text, entry_width):
label = Label(gui, text=label_text)
label.place(x=x, y=y)
gui.update()
entry = Entry(gui)
entry.place(x=x + label.winfo_width() + 10, y=y, width=entry_width)
gui.update() # еще раз обновим интерфейс
return entry # вернем метку