📦 Урок: Основни типове данни в Python
Представете си, че правите списък за пазаруване или пишете съобщение на приятел. В програмирането всяко парче информация има своята „категория“.
- Цели числа (int – Integer)
Това са числата без запетая. Използваме ги, когато броим неща, които не могат да бъдат „половинки“.
- Примери: Брой ученици в клас (25), години (13), брой нива в игра.
- В Python изглежда така: apples = 5
- Дробни числа (float – Floating point)
Това са числата с десетична запетая (в програмирането използваме точка .). Използваме ги за измервания.
- Примери: Цена на продукт (2.50), височина (1.65), успех в училище (5.75).
- В Python изглежда така: price = 2.99
- Текст (str – String)
Всичко, което е заградено в кавички, се счита за текст (низ). Може да съдържа букви, цифри и символи.
- Примери: Име ("Иван"), град ("София"), парола ("p@ss123").
- В Python изглежда така: name = "Георги"
- Булев тип (bool – Boolean)
Това е най-лесният, но и най-важният тип за логиката. Той има само две възможни стойности: Истина или Лъжа.
- Примери: Светната ли е лампата? (True/False), Преминат ли е изпитът?
- В Python изглежда така: is_sunny = True
📊 Бърза справка
|
Тип в Python |
Име |
Какво представлява? |
Пример |
|
int |
Integer |
Цели числа |
10, -5 |
|
float |
Float |
Дробни числа |
3.14, 10.0 |
|
str |
String |
Текст в кавички |
"Здравей!" |
|
bool |
Boolean |
Логическа стойност |
True или False |
🛠️ Как да проверим типа в Python?
Ако се чудим какъв тип е дадена променлива, използваме магическата функция type().
Python
x = 10
print(type(x)) # Ще изпише <class 'int'>
y = "10"
print(type(y)) # Ще изпише <class 'str'>, защото има кавички!
Важно за 7. клас: Обърнете внимание, че 10 и "10" са различни неща за компютъра! С първото можем да смятаме, а второто е просто картинка на числото.
Въпроси:
🎮 Ниво 1: „Кой е моят тип?“
Определи какъв тип данни (int, float, str или bool) е всяка от следните променливи:
- username = "Cyber_Knight"
- posts_count = 42
- rating = 4.8
- is_online = False
- phone_number = "0888123456"
🔍 Ниво 2: „Детектив в кода“
Един програмист е направил грешки в кода си. Можеш ли да познаеш кой ред ще даде грешка (Error) и защо?
Python
# Ред 1
print(5 + 10)
# Ред 2
print("5" + "10")
# Ред 3
print("5" + 10)
Подсказка: Компютърът е малко инатлив – не обича да смесва различни типове в една сметка.
🧪 Ниво 3: „Магьосникът на преобразуването“
Понякога се налага да променим типа на данните (това се нарича casting). Опитай се да отгатнеш какво ще изпише Python накрая:
Python
number_as_text = "20"
converted_number = int(number_as_text) # Променяме го на цяло число
result = converted_number + 5
print(result)
Какъв ще е крайният резултат?
🏆 Бонус предизвикателство (за отличници):
Каква е разликата между тези две променливи?
- a = 5
- b = 5.0
Решения:
🎮 Отговори: Ниво 1 (Кой е моят тип?)
- str (String) – Има кавички, значи е текст.
- int (Integer) – Цяло число (брой постове).
- float – Има десетична точка.
- bool (Boolean) – Логическо "Лъжа".
- str (String) – Важно! Макар да виждаме цифри, те са в кавички. Телефоните често се записват като текст, защото не искаме да ги събираме или изваждаме, а и често започват с 0.
🔍 Отговори: Ниво 2 (Детектив в кода)
- Ред 1: Ще изпише 15 (Нормално събиране на числа).
- Ред 2: Ще изпише 510. Изненада! Когато събираме два текста, Python просто ги „залепя“ един за друг.
- Ред 3: ГРЕШКА! 🚨 Python не знае как да събере текст ("5") с число (10). Все едно да те попитам: „Колко е 5 метра + 10 килограма?“. Няма логичен отговор.
🧪 Отговори: Ниво 3 (Магьосникът)
Резултатът е 25. Магията тук е във функцията int(). Тя взема текста "20", маха му кавичките и го превръща в истинско число. След това 20 + 5 си е чиста математика.
🏆 Бонус за отличници:
- a = 5 е int (цели 5 лева).
- b = 5.0 е float (5 лева и 0 стотинки). За нас е едно и също, но за компютъра 5.0 заема малко повече „място“ в паметта, защото винаги е готов да добави и други цифри след запетаята (например 5.12).
Да направим една малка програма, която пита потребителя за неговото име и години и ги подрежда в изречение?
Ще използваме две много важни команди:
- input() – за да зададем въпрос на потребителя.
- print() – за да покажем резултата.
# 1. Питаме за името (това автоматично е string/текст)
name = input("Как се казваш? ")
# 2. Питаме за годините
# ВНИМАНИЕ: input() винаги връща текст, затова го превръщаме в число с int()
age = int(input("На колко години си? "))
# 3. Изчисляваме след колко години ще станеш на 100
years_to_100 = 100 - age
# 4. Показваме резултата
print("Здравей, " + name + "!")
print("След " + str(years_to_100) + " години ще празнуваш своя 100-тен рожден ден! 🎂")
🕵️♂️ Какво се случва?
Когато програмата работи, тя обработва данните по следния начин:
- Ред 2: Използваме int(input(...)). Ако не го направим, Python ще си мисли, че годините са текст (като "13"), и няма да може да извади 100 - "13".
- Ред 4: Използваме str(years_to_100). Тук правим обратното – превръщаме числото в текст, за да можем да го „залепим“ към изречението с бутона +.
🚀 Предизвикателство за теб:
Опитай се да добавиш нов ред в програмата, който пита: "Колко е джобният ти за деня?".
- Подсказка: Използвай тип float, защото джобните могат да бъдат 5.50 лв.
- След това пресметни колко пари ще има потребителят след 7 дни (умножи ги по 7).
Ето как би изглеждал кодът, ако добавим и сметката за джобните. Обърни внимание на float(), защото парите често имат стотинки:
# Питаме за джобните и ги превръщаме в дробно число (float)
daily_money = float(input("Колко лева са джобните ти за един ден? "))
# Изчисляваме за една седмица (7 дни)
weekly_money = daily_money * 7
print("За една седмица ще имаш общо " + str(weekly_money) + " лева! 💸")
🤔 Защо използваме float() тук?
Ако потребителят напише, че получава 5.50 лв., и ние използваме int(), програмата ще „гръмне“ (ще даде грешка), защото int не разбира от десетични точки. float е по-сигурният избор за всичко, свързано с пари или измервания.
🍎 Домашно: Програма „Плодов Магазин“
Твоята задача:
Напиши програма на Python, която прави следното:
- Пита потребителя: „Кой плод купувате днес?“ (тип str)
- Пита за цената: „Каква е цената за 1 кг?“ (използвай float, защото цените имат стотинки).
- Пита за количеството: „Колко килограма искате?“ (може да е float, ако някой си купи 1.5 кг).
- Пресмята общата сума: Умножи цената по килограмите.
- Изписва резултата по следния начин:
„Вие купихте [плод] за общо [сума] лева. Приятен ден!“
Помощни насоки за кода:
- Не забравяй да превърнеш входа (input) в число, преди да смяташ.
- Когато показваш общата сума накрая, не забравяй да я превърнеш обратно в текст със str().
Ето го правилното решение на задачата стъпка по стъпка. Това е „класическият“ начин, по който се пишат малки програми за пресмятане:
# 1. Питаме за името на плода
fruit = input("Кой плод купувате днес? ")
# 2. Питаме за цената (превръщаме в float за стотинки)
price_per_kg = float(input("Каква е цената за 1 кг? "))
# 3. Питаме за количеството (също float, защото може да е 1.5 кг)
quantity = float(input("Колко килограма искате? "))
# 4. Пресмятаме общата сума
total_sum = price_per_kg * quantity
# 5. Изписваме крайния резултат
# Използваме str(), за да залепим числото към текста
print("Вие купихте " + fruit + " за общо " + str(total_sum) + " лева. Приятен ден!")
🔍 Защо това решение работи?
- Променливите: Създадохме три кутии (fruit, price_per_kg, quantity), за да пазим отговорите на потребителя.
- Математиката: Използвахме оператора * за умножение. Тъй като и двете числа са float, резултатът също ще бъде float.
- Сглобяването: Python не ни позволява да кажем директно "цена: " + 5.50. Затова използвахме str(total_sum), за да превърнем числото обратно в текст, преди да го покажем на екрана.
🚀 Какво следва?
Вече можеш да създаваш програми, които:
- Приемат информация.
- Обработват я (смятат).
- Връщат отговор.
# 1. Питаме за името на плода
fruit = input("Кой плод купувате днес? ")
# 2. Питаме за цената
price_per_kg = float(input("Каква е цената за 1 кг? "))
# 3. Питаме за количеството
quantity = float(input("Колко килограма искате? "))
# 4. Пресмятаме общата сума и я ЗАКРЪГЛЯМЕ до 2 знака още тук
# Функцията round(число, 2) прави точно това
total_sum = round(price_per_kg * quantity, 2)
# 5. Изписваме крайния резултат по твоя начин
print("Вие купихте " + fruit + " за общо " + str(total_sum) + " лева. Приятен ден!")
Какво се случва тук?
- Ако сметката е 2.66666, функцията round(..., 2) я превръща в 2.67.
- След това str(total_sum) превръща това „чисто“ число в текст и го залепя към останалото изречение.




