Онлайн час в Google Meet
Лого на 91. НЕГ „Проф. Константин Гълъбов“

12. клас · Избираем модул · Урок 18

Бърз старт с Python в Google Colab

Python за хора, които знаят C#: клетки в Colab, променливи без типове, списъци, речници, функции, for/if и f-низове. Отстъпите вместо скоби и капаните при прехода.

Защо Python, щом знаем C#

От следващия урок ще извикваме езиков модел от програма, ще разчитаме JSON и ще пишем в база от данни. Всичко това може и на C#. Но цялата екосистема за изкуствен интелект — библиотеките, примерите, документацията — е на Python. И има още една причина: Google Colab е Python среда в браузъра — без инсталация, без права, с готови библиотеки.

Добрата новина: идеите са същите. Променливи, списъци, условия, цикли, функции — знаете ги от Модул 1. Разликата е в синтаксиса, а той се учи за един час.

Colab: клетки и изпълнение

  1. Отворете colab.research.google.com с Google акаунта си и създайте нова тетрадка (notebook).
  2. Тетрадката е списък от клетки. В клетка с код пишете Python; Shift+Enter я изпълнява и показва изхода точно под нея.
  3. Няма Main — кодът се изпълнява ред по ред, отгоре надолу, в реда, в който пускате клетките.
  4. Променливите живеят между клетките: дефинирана в първата, се ползва в третата. Затова редът на изпълнение е важен.
  5. Ако се объркате — Runtime → Restart session изтрива всичко и започвате отначало.

Същата програма на два езика

Списък от ученици, филтриране на отличните, средна оценка. Първо така, както бихте го написали в Модул 1:

var ucenici = new List<(string Ime, string Klas, double Ocenka)> {
    ("Мария", "12а", 5.50), ("Георги", "12а", 4.25), ("Елена", "12б", 5.75)
};
double suma = 0;
foreach (var u in ucenici) {
    if (u.Ocenka >= 5.00) {
        Console.WriteLine($"{u.Ime} ({u.Klas}) — {u.Ocenka:F2}");
    }
    suma += u.Ocenka;
}
Console.WriteLine($"Средна: {suma / ucenici.Count:F2}");

А сега на Python:

ucenici = [
    {"ime": "Мария", "klas": "12а", "ocenka": 5.50},
    {"ime": "Георги", "klas": "12а", "ocenka": 4.25},
    {"ime": "Елена", "klas": "12б", "ocenka": 5.75},
]
suma = 0
for u in ucenici:
    if u["ocenka"] >= 5.00:
        print(f"{u['ime']} ({u['klas']}) — {u['ocenka']:.2f}")
    suma += u["ocenka"]
print(f"Средна: {suma / len(ucenici):.2f}")

# Мария (12а) — 5.50
# Елена (12б) — 5.75
# Средна: 5.17
  • Няма типове при декларация: „suma = 0“, а не „double suma = 0“. Типът се извежда от стойността.
  • Няма точка и запетая; блокът започва с двоеточие и продължава, докато трае отстъпът (4 интервала).
  • Записът е речник (dictionary): двойки ключ → стойност, достъп с u["ime"]. Това е като ред от таблица — колона → стойност.
  • f-низът f"…{израз:.2f}" е точно $"…{израз:F2}" от C#.

C# ↔ Python

C#Python
Променливаint broi = 5;broi = 5
Низstring ime = "Ива";ime = "Ива"
Форматиране$"{x:F2}"f"{x:.2f}"
ИзвежданеConsole.WriteLine(x);print(x)
Блок{ … }: и отстъп
Условиеif (a > b && c) { … }if a > b and c:
Иначе акоelse if (…)elif …:
Цикъл по колекцияforeach (var u in lst)for u in lst:
Цикъл с броячfor (int i = 0; i < 10; i++)for i in range(10):
Списъкnew List<int> { 1, 2 }[1, 2]
Дължинаlst.Countlen(lst)
Добавянеlst.Add(x);lst.append(x)
Речникnew Dictionary<string, int>(){}
Функцияstatic double Sredna(List<double> a)def sredna(a):
НищоnullNone
Истинаtrue / falseTrue / False
Коментар// текст# текст

Списъци, речници, функции

Списък

imena = ["Мария", "Георги", "Елена"]
imena.append("Ива")
print(len(imena), imena[0], imena[-1], imena[1:3])
# 4 Мария Ива ['Георги', 'Елена']

for i, ime in enumerate(imena):
    print(i, ime)          # 0 Мария, 1 Георги, ...

dalgi = [ime for ime in imena if len(ime) > 4]   # list comprehension
print(dalgi)             # ['Мария', 'Георги', 'Елена']

Индексът -1 е последният елемент, [1:3] — срез от позиция 1 до 3 без нея. Редът [израз for x in списък if условие] е цикъл, филтър и нов списък на един ред — ще го виждате навсякъде.

Речник

zapis = {"ime": "Мария", "klas": "12а"}
zapis["ocenka"] = 5.50          # добавяне на ключ
print(zapis["ime"])             # Мария
print(zapis.get("grad"))        # None — няма грешка при липсващ ключ
print("klas" in zapis)          # True

for kluch, stoynost in zapis.items():
    print(kluch, "→", stoynost)

Функция

def sredna(stoynosti, znaci=2):
    if len(stoynosti) == 0:
        return None
    return round(sum(stoynosti) / len(stoynosti), znaci)

print(sredna([5.5, 4.25, 5.75]))     # 5.17
print(sredna([]))                     # None

Без тип на параметрите и на резултата, с параметър по подразбиране (znaci=2). Функцията може да върне число в единия случай и None в другия — Python го позволява, извикващият код трябва да провери.

Какво трябва да запомниш

  • Colab е Python в браузъра: тетрадка от клетки, Shift+Enter изпълнява клетката, променливите живеят между клетките.
  • Без типове при декларация и без точка и запетая; блокът е двоеточие плюс отстъп.
  • Списък [ … ] с append, len, индекси и срезове; речник { ключ: стойност } — запис като ред от таблица.
  • for x in списък: обхожда елементите; for i in range(n): е броячът от C#.
  • def име(параметри): дефинира функция; None е null; True/False с главна буква.
  • f"{x:.2f}" форматира като $"{x:F2}"; and/or/not вместо &&, ||, !.