Освой Python играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
Булевы значения True и False пишутся с большой буквы. Комментарии помечаются символом # вместо привычных //. Точки с запятой не ставятся.
Можно объявить сразу несколько переменных необычным способом.
x, y, z = "Кот", "Кошка", "Котёнок"
print(x)
print(y)
print(z)
Вложенные инструкции объединяются в блоки по величине отступов. Отступ может быть любым, главное, чтобы в пределах одного вложенного блока отступ был одинаков. Обычно используют 4 пробела.
Вложенные инструкции записываются по следующему сценарию - когда основная инструкция завершается двоеточием, то вслед за ним располагается вложенный блок кода, обычно с отступом под строкой основной инструкции.
Основная инструкция:
Вложенный блок инструкций
if(5 > 0):
print("Пять больше нуля")
Тело составной инструкции может располагаться в той же строке, что и тело основной, если тело составной инструкции не содержит составных инструкций. Поэтому допустимо переписать пример.
if(5 > 0):print("Пять больше нуля")
Иногда возможно записать несколько инструкций в одной строке, разделяя их точкой с запятой (не рекомендуется).
a = 1; b = 2; print(a, b)
Кроме умножения (*), есть оператор возведения в степень (**).
print(2 ** 3) # 8
Хотя есть и специальный класс math.
pow(2, 3)
// полный вариант
import math
math.pow(8, 2)
Также есть два вида деления. Обычное деление через / или целочисленное деление //. А ещё есть деление по модулю %.
print(5 / 3) # 1.6666666666666667
print(5 // 3) # 1
print(5 % 3) # 2
Ветвление if. Не забывайте про двоеточия и отступы. Части elif и else не являются обязательными.
x = 22
if(x > 30):
print("x больше 0")
elif (x < 11):
print("4 меньше 11")
else:
print("Я кот!")
Цикл for. Он немного отличается от стандартного синтаксиса в других языках (есть похожие аналоги в виде foreach или for (int i : IntArray)).
for i in range(5):
lcd.print(i)
# 01234
Ещё пример.
for ch in 'hello kitty':
print(ch * 2, sep='|', end = ' ')
# hh ee ll ll oo kk ii tt tt yy
Цикл while.
i = 5
while(i > 0):
lcd.print(i)
i -= 1
# 54321
Оператор continue начинает следующий проход цикла, минуя оставшееся тело цикла (for или while).
for ch in 'hello kitty':
if ch == 'o':
continue
print(ch * 2, end = ' ')
# hh ee ll ll kk ii tt tt yy
Оператор break досрочно прерывает цикл.
for ch in 'hello kitty':
if ch == 'k':
break
print(ch + '3', end = ' ')
# h3 e3 l3 l3 o3 3
В Python есть эквивалент тернарного оператора ?:.
[on_true] if [expression] else [on_false]
x, y = 50, 25
small = x if x < y else y
Глядя на код из предыдущих примеров, может сложиться впечатление, что у Питона нет никаких типов, но это не так.
Встроенные типы: str, int, float, complex, list, tuple, range, dict, set, frozenset, bool, bytes, bytearray, memoryview.
Узнать тип данных можно через type().
x = 5
print(type(x))
cat = "Pussy"
print(type(cat))
isCat = True
print(type(isCat))
Тип bytearray - массив байт и в отличии от bytes является изменяемым.
Комплексные числа complex записываются с суффиксом j.
y = 5j
Конвертировать из одного типа в другой можно через соответствующие методы int(), float(), complex().
x = 1 # int
y = 2.8 # float
z = 1j # complex
#convert from int to float:
a = float(x)
#convert from float to int:
b = int(y)
#convert from int to complex:
c = complex(x)
print(a)
print(b)
print(c)
print(type(a))
print(type(b))
print(type(c))
Тип complex нельзя конвертировать в другие числовые типы.
При помощи модуля randomвыводим на экран случайное число от 0 до 10, используя функцию random.randint() после нажатия кнопки B (для платы M5Stack).
# MicroPython
from m5stack import *
from m5ui import *
from uiflow import *
# import random - на M5Stack работает без импорта
setScreenColor(0x222222)
label = M5TextBox(128, 95, "", lcd.FONT_DejaVu40,0xFFFFFF