Python: деректен өз есебіңізге дейін 1-сабақ (барлығы 56)
Өз бетіңізше санау не үшін керек: бағалар, теңге және бір сұрақ
Python курсының бірінші сабағы. Кітапхана орнатудың қажеті жоқ: дайын бағдарлама ресми сандарды өзі алып, солар бойынша санайды. Қазақстанда бағалар 2010 жылдан бері 3,48 есе өсті: мың теңге тұрған нәрсе 3481 теңге тұрады. Ал өңірдің басқа елдерінде сол шоктан кейін инфляция үш есе төмен. Бұл — өзіңіз санаудың алғашқы себебі.
Не үшін керек
Сізге сандар айтылады. Инфляция — мынандай. Өсім — сондай. Кінәлі — анау. Айтылғанды тексере алмайсыз, сондықтан сену немесе сенбеу ғана қалады.
Бұл курс «сену» мен «сенбеудің» арасында таңдауды доғару туралы. Бағалар, ақша және курс туралы дерек ашық жатыр; оны алып санау үшін бір құрал — Python — және бірнеше кеш керек.
Соңынан бастайық: тілді әлі білмей тұрып, он бес минуттан кейін алатын жауаптан.
Бірден тұтас
Алдымен тілдің бар-жоғын тексеріңіз: терминалда python3 --version (Windows-та — py --version). Нұсқа нөмірін берсе — әрі қарай жүріңіз. Бермесе — келесі сабақтан бастаңыз, онда Python нөлден он минутта орнатылады, содан кейін осында оралыңыз.
tsena.py файлын жасап, мынаны қойыңыз. Қосымша ештеңе орнатудың қажеті жоқ: мұнда қолданылғанның бәрі Python-мен бірге келеді. Бағдарлама бірінші күнге ұзындау — елу жол, — оны бүгін түгел талдаудың қажеті жоқ: қазір құрылысы емес, жауабы маңызды.
"""Курстың алғашқы бағдарламасы: ол курс жазылған сұрақты қояды.
Ештеңе орнатудың қажеті жоқ — мұнда қолданылғанның бәрі Python-мен бірге келеді.
Бағдарлама ресми сандарды өзі алып, солар бойынша санайды.
"""
import json
import urllib.request
# Дүниежүзілік банк елдер бойынша көрсеткіштерді кілтсіз әрі тіркеусіз береді.
# FP.CPI.TOTL — тұтыну бағаларының индексі, FP.CPI.TOTL.ZG — пайызбен инфляция.
API = "https://api.worldbank.org/v2/country/{}/indicator/{}?format=json&per_page=80&date={}:{}"
def rows(country, indicator, first, last):
"""{жыл: мән} қайтарады — Дүниежүзілік банк не жауап берсе, сол."""
url = API.format(country, indicator, first, last)
with urllib.request.urlopen(url, timeout=30) as answer:
data = json.load(answer)
if len(data) < 2 or not data[1]:
return {}
return {int(item["date"]): item["value"] for item in data[1] if item["value"] is not None}
def main():
print("== Қазақстанда бағалар неше есе өсті")
prices = rows("KZ", "FP.CPI.TOTL", 2010, 2025)
base, last = min(prices), max(prices)
times = prices[last] / prices[base]
print(f"{base} жылғы баға индексі: {prices[base]:.1f}")
print(f"{last} жылғы баға индексі: {prices[last]:.1f}")
print(f"бағалар {times:.2f} есе өсті")
# Бір қатынас екі жаққа да оқылады, әрі оларды шатастыру қымбатқа түседі.
print(f"{last} жылғы 1000 теңге = {base} жылғы бағамен {1000 / times:.0f} теңге")
print(f"{base} жылы 1000 теңге тұрған нәрсе {1000 * times:.0f} теңге тұрады")
print()
print("== әлем бір, бағалар басқа: жылдар бойынша инфляция, %")
countries = {"KZ": "Қазақстан", "WLD": "әлем", "GE": "Грузия",
"AM": "Армения", "PL": "Польша"}
years = range(2021, 2026)
print("ел " + "".join(f"{year:>7}" for year in years))
for code, name in countries.items():
inflation = rows(code, "FP.CPI.TOTL.ZG", 2021, 2025)
line = "".join(f"{inflation[year]:7.1f}" if year in inflation else f"{'—':>7}"
for year in years)
print(f"{name:<12}{line}")
main()
python3 tsena.py деп іске қосыңыз. Шығатыны:
== Қазақстанда бағалар неше есе өсті
2010 жылғы баға индексі: 100.0
2025 жылғы баға индексі: 348.1
бағалар 3.48 есе өсті
2025 жылғы 1000 теңге = 2010 жылғы бағамен 287 теңге
2010 жылы 1000 теңге тұрған нәрсе 3481 теңге тұрады
== әлем бір, бағалар басқа: жылдар бойынша инфляция, %
ел 2021 2022 2023 2024 2025
Қазақстан 8.0 15.0 14.5 8.7 11.4
әлем 3.5 8.1 5.8 3.0 3.0
Грузия 9.6 11.9 2.5 1.1 3.9
Армения 7.2 8.6 2.0 0.3 3.3
Польша 5.1 14.4 11.5 3.8 3.8
Желі болмаса
Бағдарлама интернетке шығады, әрі шықпай қалуы мүмкін бірінші нәрсе де сол: байланыс жоқ, қатынау жабық, бөтен сервердің демалысы. Ондайда сол бағдарламаны дайын сандарымен алыңыз — олар Дүниежүзілік банктің дәл сол жауабынан, әрі ол дәл сол нәрсені басып шығарады.
"""Сол бағдарлама, желісіз: сандар оның ішінде тұр.
Олар Дүниежүзілік банктің дәл сол жауабынан алынған, сондықтан ол дәл сол
нәрсені басып шығарады. Курста әрі қарай оларды өзіміз алуды үйренеміз.
"""
# Тұтыну бағаларының индексі: 2010 жыл 100 деп алынған.
prices = {2010: 100.0, 2025: 348.1}
# Жылдар бойынша инфляция, %; саны жоқ жерде «—».
inflation = {
"Қазақстан": {2021: 8.0, 2022: 15.0, 2023: 14.5, 2024: 8.7, 2025: 11.4},
"әлем": {2021: 3.5, 2022: 8.1, 2023: 5.8, 2024: 3.0, 2025: 3.0},
"Грузия": {2021: 9.6, 2022: 11.9, 2023: 2.5, 2024: 1.1, 2025: 3.9},
"Армения": {2021: 7.2, 2022: 8.6, 2023: 2.0, 2024: 0.3, 2025: 3.3},
"Польша": {2021: 5.1, 2022: 14.4, 2023: 11.5, 2024: 3.8, 2025: 3.8},
}
print("== Қазақстанда бағалар неше есе өсті")
base, last = min(prices), max(prices)
times = prices[last] / prices[base]
print(f"{base} жылғы баға индексі: {prices[base]:.1f}")
print(f"{last} жылғы баға индексі: {prices[last]:.1f}")
print(f"бағалар {times:.2f} есе өсті")
print(f"{last} жылғы 1000 теңге = {base} жылғы бағамен {1000 / times:.0f} теңге")
print(f"{base} жылы 1000 теңге тұрған нәрсе {1000 * times:.0f} теңге тұрады")
print()
print("== әлем бір, бағалар басқа: жылдар бойынша инфляция, %")
years = range(2021, 2026)
print("ел " + "".join(f"{year:>7}" for year in years))
for name, series in inflation.items():
line = "".join(f"{series[year]:7.1f}" if year in series else f"{'—':>7}"
for year in years)
print(f"{name:<12}{line}")
Шығатыны:
== Қазақстанда бағалар неше есе өсті
2010 жылғы баға индексі: 100.0
2025 жылғы баға индексі: 348.1
бағалар 3.48 есе өсті
2025 жылғы 1000 теңге = 2010 жылғы бағамен 287 теңге
2010 жылы 1000 теңге тұрған нәрсе 3481 теңге тұрады
== әлем бір, бағалар басқа: жылдар бойынша инфляция, %
ел 2021 2022 2023 2024 2025
Қазақстан 8.0 15.0 14.5 8.7 11.4
әлем 3.5 8.1 5.8 3.0 3.0
Грузия 9.6 11.9 2.5 1.1 3.9
Армения 7.2 8.6 2.0 0.3 3.3
Польша 5.1 14.4 11.5 3.8 3.8
Мұнда сандар бағдарламаның ішіне жазылған, әрі оны адал атайды: олар «алынған» емес, көшірілген. Банк жауабының қалай құралғанын он үшінші сабақта, ал оған өзіңіз қалай баратыныңызды он сегізінші сабақта талдаймыз.
Талдау
Сіз не санап шықтыңыз
Алғашқы бес жол — қалтаңыздағы ақша туралы. 2010 жылғы баға индексі — 100, 2025 жылы — 348,1. Демек, бағалар 3,48 есе өсті. Бұл сан екі жаққа да оқылады.
Бүгін қолыңызда жатқан мың теңге 2010 жылы 287 теңге сатып алатынды ғана алады. Керісінше де дұрыс: 2010 жылы мың теңге тұрған нәрсе үшін енді 3481 теңге сұрайды. Қатынас біреу, сөйлем екеу — оларды шатастыру он екі есе қателесу деген сөз.
«Шамамен үш есе» емес, «бәрі біледі» де емес. Сан сіздің көз алдыңызда ресми қатардан саналды. Жылды 2010-нан 2015-ке ауыстырып, не болатынын қарап көріңіз.
Шок бір — сандар басқа
Екінші кесте біріншіден маңыздырақ, себебі мынау.
Бағалар өскенде түсіндірме әдетте былай естіледі: әлем қымбаттады, соғыс, логистика, астық, мұнай. Тексерейік. 2022 жылы шынымен бәрінде қымбаттады: әлем — 8,1%, Қазақстан — 15,0%.
Ал әрі қарай жолдар айырылады. 2025 жылға қарай әлем 3,0%-ға оралды, Армения — 3,3%, Грузия — 3,9%, Польша — 3,8%. Қазақстан — 11,4% әрі қайта жоғары.
Шок ортақ болды — демек, айырмашылықты тек сонымен түсіндіруге болмайды. Оның қаншалық кінәлі екені бұл кестеден көрінбейді: оны бағалау үшін импорт құрылымын, валюта бағамын, тұтыну себетіндегі салмақтарды, тарифтер мен ішкі шешімдерді қатар қою керек. Кесте азырақ әрі сенімдірек нәрсе айтады: «сыртқы әлем кінәлі» деген жауап онымен сәйкес келмейді.
Бұдан не шығады және не шықпайды
Бір нәрсе шығады: «сыртқы әлем кінәлі» — жеткіліксіз түсіндірме. Ол сол мұнайды, сол бидайды және сол логистиканы алған елдермен салыстыруға шыдамайды.
Бірақ керісінше қарапайым түсіндірме — «ақша басып шығарды» — өзі де сәйкес келмейді — мұны да курста тексереміз. Кең ақша массасы Арменияда жылына 13–18%, Грузияда 11–17%, Қазақстанда 12–21% өседі. Өсім шамалас, ал инфляция үш-төрт есе өзгеше. Демек, мәселе бір қатар сандарда емес: қасында теңге курсы, тарифтер, салықтар және жаңа ақшаның қайда баратыны тұр.
Курс сізге дайын кінәлі бермейді. Ол сізге төрт қатарды қатар қойып, қайсысы сәйкес келмейтінін көру білігін береді. Бұл кез келген бөтен қорытындыдан сенімдірек — біздікін қоса.
Елестетіп көріңіз. Диагнозды телефонмен айтатын дәрігер мен сізге суретті беріп, оны оқуды үйрететін дәрігер. Біріншісі дұрыс болуы мүмкін. Екіншісін алдау мүмкін емес.
Қалай оқимыз
Осы алаңдағы Go курсы Виктор Фёдорович Шаталовтың әдістемесіне құрылған — оның жүйесі мектеп оқушыларына бағдарламаны бірнеше есе жылдам өтуге мүмкіндік берген. Екінші курс та сол әдістемемен жүреді; жүйенің өзі туралы — әдістеме сипаттамасында.
Одан төрт нәрсе алынды.
Алдымен тұтас, содан кейін бөлшек. Әр сабақ жұмыс істейтін бағдарламадан басталады. Сіз оны әлі ештеңе түсінбей іске қосасыз — бүгінгідей, — содан кейін ғана бөлшектеп талдайсыз.
Тірек сигнал. Талдаудың соңында сабақ картасы: бір экранға бір сурет, онда маңыздысы фигуралар мен байланыстармен көрсетілген. Оны суретке түсіріп, телефонда ұстауға болады; мәні — оны қолмен қайта сыза алуыңызда.
Анықтаманың орнына бейне. Әр таныс емес термин тұрмыстық суретпен түсіндіріледі. Баға индексі — «себет дефляторы» емес, 2010 жылы жүз бөлігі болған, ал бүгін үш жүз қырық сегіз бөлігі бар сызғыш.
Бірден түсінбеуге құқық. Баға жоқ, құлаған тест жоқ, «сіз өтпедіңіз» деген жоқ. Сабақта бір міндетті тапсырма — кішкентай әрі әрқашан орындалатын — және қалауыңызша екеу.
Не саламыз
Курстың соңында сізде өз шолуыңыз жұмыс істейді: жаңа деректі өзі алып, дерекқорға салып, санап, график сызып, есеп бетін жинап, сізсіз кесте бойынша іске қосылатын бағдарлама. Елу бес сабақ — алғашқы жолдан кестеге дейін.
Жол-жөнекей өз чектеріңіз бойынша жеке инфляцияңызды санап, оны ресмимен салыстырасыз; елде ЖІӨ теңгесіне қанша ақша бар екенін, оны кім жасағанын білесіз; алғашқы модельді үйретіп, оның қай жерде қателесетінін көресіз. Соңғы сабақтарда сандардың қасында тілдік модель пайда болады — және бірден оның жазғанын тексеру.
Курстың бөлек ережесі: бізді де тексеру ұсынылады. Алаңда ақша, банктер және инфляция туралы талдаулар шықты. Тапсырмаларда сіз біздің мақаладан бір тұжырымды алып, оны ашық деректермен тексересіз. Сәйкес келмесе — жазыңыз, мақаланы түзетеміз.
Бастау үшін не керек
Компьютер, интернет және Python. Ол бар ма — тексеріңіз: терминалда python3 --version деп теріңіз. Нұсқа нөмірімен жауап берсе — осы сабаққа дайынсыз. Жоқ болса — бұл келесі сабақ, онда тіл мен жұмыс орнын нөлден орнатамыз.
Басқа ештеңе керек емес: ақылы курс та, кілт те, тіркелу де. Біз санайтын дерек бәріне ашық — мәні де сонда.
Сабақ картасы
Өз сөзіңізбен айтыңыз
Қарамай, дауыстап немесе қағазға жауап беріңіз. Жауаптар — сабақтың соңында.
- 2010 жылы 100 болған баға индексі 2025 жылы 348,1 болса, бұл нені білдіреді?
- Басқа елдер бойынша кесте неге Қазақстан бойынша бір қатардан күштірек?
- Осы екі кестеден неге әлі кінәліні атауға болмайды?
Жаттығу
Тапсырмаға дейінгі үш қысқа қадам: болжау, толықтыру, жөндеу. Бүгін олар print туралы — бағдарламадан өз бетіңізше қайталауға болатын жалғыз нәрсе сол. Жауаптары — сабақтың соңында.
1. Болжаңыз. Бұл жол не басып шығарады?
print("нан", 260 * 3)
2. Бос орынды толтырыңыз. ... орнына үш нанның сомасын беретін нәрсені қойыңыз.
price = 260
count = 3
print(f"барлығы: {...} теңге")
3. Жөндеңіз. Бағдарлама іске қосылмайды. Python не айтқанын оқып, жолды жөндеңіз.
print("барлығы: 780 теңге)
Тапсырма
Міндетті. Бағдарламаны іске қосып, ондағы бастау жылын 2010-нан өз туған жылыңызға — немесе өзіңізге маңызды кез келген жылға — ауыстырыңыз. Екі жолды да дауыстап оқыңыз: бүгінгі мың теңге сол жылғы бағамен қанша тұрады және сол жылы мың теңге тұрған нәрсе бүгін қаншаға сұралады.
Қалауыңызша.
- Кестеге елдердің екінші қатарын қосыңыз: Қырғызстан (
KG), Өзбекстан (UZ), Түркия (TR). Кім бізге жақын, кім жақын емес — қараңыз. FP.CPI.TOTL.ZGиндикаторынPA.NUS.FCRF-ке ауыстырыңыз — бұл валютаның долларға орташа курсы. Сол жылдары теңгеге не болды?- Интернеттен Қазақстандағы бағалар туралы біреудің жария тұжырымын тауып, оны осы бағдарламамен тексеріңіз.
Жобада бұл қайда тұрады
Бүгінгі бағдарлама — шолуымыздың алғашқы нұсқасы: ол әлемнен дерек алып та қойды, ол бойынша бірдеңе де санайды. Әрі қарай оны тарихты сақтауға үйретеміз, Ұлттық банктен теңге курсын қосамыз, деректі дерекқорға саламыз, график сызып, есеп жинаймыз.
Қазірден көрініп тұрған қарыздар. Бағдарлама интернетсіз құлайды, адамша ештеңе айтпайды. Ол деректі жыл сайын бір рет өзгеретініне қарамай, әр жолы қайта сұрайды. Оның үстіне онда бірде-бір тексеру жоқ: Дүниежүзілік банк бос жауап берсе, біз мұны байқамаймыз. Бұның бәрі — таяудағы сабақтар.
Жауаптар
Жауаптарды көрсету
Сұрақтарға
- Бағалардың 3,48 есе өскенін: 2010 жылы 100 шартты бірлік тұрған сол себетке 2025 жылы 348,1 төлейді. Кері жағы — бүгінгі мың теңге 2010 жылы 287 теңге сатып алатынды ғана алады, ал 2010 жылғы мың теңгелік себет енді 3481 теңге тұрады.
- Өйткені бір қатарды кез келген нәрсемен түсіндіруге болады. Салыстыру түсіндірмені тексереді: бәріне ортақ сыртқы шок кінәлі болса, сол шокты алған елдерде сандар ұқсас болуға тиіс. Олар ұқсас емес.
- Өйткені сәйкестік те, айырмашылық та әлі себеп емес. Біз тек сыртқы шокпен түсіндіруге болмайтынын көрдік; себепті атау үшін ақшаны, курсты, тарифтер мен салықтарды қатар қою керек — бұл бір кестенің емес, бірнеше сабақтың жұмысы.
Жаттығуға
нан 780.printөзіне берілгеннің бәрін бос орын арқылы басып шығарады, ал260 * 3дегенді басудан бұрын санап қояды.
нан 780
price * count. f-жолдың жүйелі жақшасының ішіне тек атауды емес, есептеуді де жазуға болады.
price = 260
count = 3
print(f"барлығы: {price * count} теңге")
барлығы: 780 теңге
SyntaxError: unterminated string literal— тырнақша жабылмаған. Python жолды да, орнын да атайды, әрі алдымен сенуге тұратын нәрсе де сол: ол сізді жазғырмайды, қай жерде сынғанын көрсетеді.
print("барлығы: 780 теңге")
барлығы: 780 теңге
Пікірлер (0)
Пікір қалдыру үшін кіріңіз →
Әзірге пікір жоқ. Бірінші болыңыз.