All Projects → peptr → python-ogren-4-saatte-python-baslangic

peptr / python-ogren-4-saatte-python-baslangic

Licence: GPL-3.0 license
(TR) 4 saatlik Python başlangıç atölyesinin içerik dokümanı. (EN version is in progress!)

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to python-ogren-4-saatte-python-baslangic

elixir-fire-brigade-workshop
Workshop "Join the Elixir Fire Brigade - Level-up Your Elixir Debugging Skills" (ElixirConf US 2017)
Stars: ✭ 14 (-80.28%)
Mutual labels:  workshop, workshop-materials
OSC19-Linux-Workshop-Sessions
All of the workshop sessions of OSC'19 in .md and .pdf formats.
Stars: ✭ 45 (-36.62%)
Mutual labels:  workshop, workshop-materials
adsy-trainings
Workshop and training materials
Stars: ✭ 13 (-81.69%)
Mutual labels:  workshop, workshop-materials
rmarkdown-workshop
A workshop format for rmarkdown. Releases contain locations in chronological order
Stars: ✭ 27 (-61.97%)
Mutual labels:  workshop, workshop-materials
fb-messenger
Implement React concepts incrementally to a messenger app, training from https://reactjs.academy
Stars: ✭ 70 (-1.41%)
Mutual labels:  workshop, workshop-materials
trouble-training
FullStack DDD/CQRS with GraphQL workshop including distributed tracing and monitoring. This shows the configuration from React frontend to .Net backend.
Stars: ✭ 271 (+281.69%)
Mutual labels:  workshop, workshop-materials
2017-summer-workshop
Exercises, data, and more for our 2017 summer workshop (funded by the Estes Fund and in partnership with Project Jupyter and Berkeley's D-Lab)
Stars: ✭ 33 (-53.52%)
Mutual labels:  workshop, workshop-materials
podstawy-dl-2019
Materiały z warsztatów z podstaw Deep Learningu dla początkujących. Wiosna 2019.
Stars: ✭ 14 (-80.28%)
Mutual labels:  workshop, workshop-materials
BestPracticesWorkshop
Repository for the workshop "Best practices on development"
Stars: ✭ 14 (-80.28%)
Mutual labels:  workshop, workshop-materials
image-crawler
An image scraper that scraps images from unsplash.com
Stars: ✭ 12 (-83.1%)
Mutual labels:  requests
Music-downloader-bot
A telegram bot that can send you high-quality audio 🎧🎧🎧
Stars: ✭ 35 (-50.7%)
Mutual labels:  telegram-bot
GitHub-Webhook-Bot
It is a Simple Telegram Bot, which will listen to GitHub Webhook and inform via Telegram
Stars: ✭ 33 (-53.52%)
Mutual labels:  telegram-bot
telegram client
library for help you make userbot or bot telegram and support tdlib telegram database and only support nodejs dart and google-apps-script
Stars: ✭ 38 (-46.48%)
Mutual labels:  telegram-bot
clojure
Practicalli Clojure REPL Driven Development
Stars: ✭ 40 (-43.66%)
Mutual labels:  workshop
DadosAbertosBrasil
Pacote Python para acesso a dados abertos e APIs do governo brasileiro.
Stars: ✭ 28 (-60.56%)
Mutual labels:  requests
Google-Search-Bot
A google search telegram bot.
Stars: ✭ 32 (-54.93%)
Mutual labels:  telegram-bot
Peanuts
Peanuts is a free and open source wifi tracking tool. Based on the SensePosts Snoopy-NG project that is now closed.
Stars: ✭ 34 (-52.11%)
Mutual labels:  requests
comments-generator
A Reddit bot that generates new context-aware comments using Markov chains trained from a set of given users or subreddits comments history.
Stars: ✭ 63 (-11.27%)
Mutual labels:  requests
curly.hpp
Simple cURL C++17 wrapper
Stars: ✭ 48 (-32.39%)
Mutual labels:  requests
fastrates
💵 Free & open source API service for current and historical foreign exchange rates.
Stars: ✭ 26 (-63.38%)
Mutual labels:  requests

Python Öğren 4 Saatte Python'a Başlangıç

(PDF Olarak Erişim)

 Python Nedir?

Python; veri biliminden web uygulaması geliştirmeye, API oluşturmaktan sistem yönetimine kadar hem kişisel bilgisayarlarda, hem sunucu dünyasında hem de gömülü ve mobil cihazlarda kullanım alanı bulan, öğrenmesi kolay ve kod geliştirirken işleri oldukça hızlandıran bir dil.

Neden Python Öğrenelim?

  • Yüzbinlerce kütüphaneye sahip
  • Öğrenmesi ve yazımı kolay
  • Okuması rahat
  • Günlük işler için çok kısa sürede çözüm üretmeye müsait

Başlangıç

Kurulum

Bilgisayarlarımızda Python'un kurulu olduğundan emin olmamız gerekiyor. Bunun için, https://www.python.org/downloads/ adresinden işletim sistemimize uygun olan sürümü indiriyoruz.

Kurulum aşamaları indirdiğimiz dosyayı açtığımızda çıkan ekranı takip ettiğimizde tamamlanıyor. Kod yazmaya hazırız!

Test Edelim

Python'u test edebilmek için işletim sistemlerine göre birkaç yöntem mevcut. Onlara göre bakalım:

GNU/Linux ve MacOS

Ubuntu, Fedora, OpenSuse gibi bir GNU/Linux dağıtımında çalışıyorsanız, tek yapmanız gereken bir terminal açıp python3 yazmak ve entera basmaktan ibaret. Eğer hata almak yerine şöyle bir ekran görüyorsanız hazırsınız:

➜  ~ python3
Python 3.7.6 (default, Jan  5 2020, 20:31:56) 
[Clang 11.0.0 (clang-1100.0.33.16)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Windows

Windows'ta kurulum yönteminize göre, PowerShell'i açıp python yazmak ve Enter'a basmak yeterli olur. Ayrıca bir arayüz kullanmak isterseniz uygulamalar arasından IDLE'yi açabilirsiniz.

İlk Komutlar

Python'un bizimle etkileşime geçtiği yer kendi komut satırı.

Python'un bizden bir şeyler beklediğini >>> yazmasından anlayabiliriz.

>>> 

Burada istersek matematiksel işlemleri yapabiliriz. Mesela elimizde yer alan fatura ödemelerinin toplamı için bir hesap makinesine ihtiyacımız olsun:

>>> 35.4 + 90 + 105.2
230.60

Sondaki çıktının noktadan sonraki kısmı daha uzun gözükebilir. Onu şimdilik görmezden gelelim ve devam edelim.

Nasıl Çıkarız?

Python'a bir şeyler yazdık ama onu nasıl kapatıp çıkacağımızı henüz görmedik. İstediğimiz hesaplamayı yaptıktan sonra, Python'dan çıkmak için exit() yazıp entera basmamız yeterli.

exit() yazmamız yazılım dünyasında exit fonksiyonunu çalıştırdık. Bu fonksiyon Python'u kapatıp çıkıyor olarak geçiyor.

Kütüphaneler & Kütüphane/Kitaplık Nedir?

Python'da bizim kullanabilmemiz için uzun uzun, detaylıca yazılmış hazır kodları kullanmamızı sağlayan birkaç teknoloji var. Biz de olabildiğince bu nimetlerden faydalanıp, günler hatta aylar harcayıp kendimiz yazmak yerine varolanı kullanıyoruz. Mesela hava durumu için bir websitesine girip ordan hava durumunu bulacak kodu ya da Ethereum'un satış fiyatını alıp bize söyleyecek kodu uzun uzun yazmak yerine, yazılmış bir tanesini alıp kullanabiliyoruz.

Bunlara ise Python dünyasında modül deniyor.

Kütüphane Kurulumu

Python'a yeni kütüphaneler(modüller) eklemek için pip komutunu kullanıyoruz. Bir terminal açıp:

pip install requests

yazmamız yeterli. Bu örnekte kurduğumuz modülün adı requests oldu.

Kütüphane Kullanımı

Python'da bir kitaplığı kullanmak istersek, isminin başına import yazmamız yeterli.

>>> import requests

API Ne İşe Yarar? Örnek API

Mesela, CollectAPI'den döviz fiyatlarını ve alakalı bazı bilgileri almak istersek kendilerinin API'si olan https://collectapi.com/tr/api/economy/altin-doviz-ve-borsa-api adresini ziyaret edebiliriz.

API Kullanımı

Şimdi Python'da bu web sayfasındaki içeriği nasıl görebileceğimize bakalım.

>>> import requests
>>> requests.get('https://api.collectapi.com/economy/allCurrency')
<Response [200]>

En sondaki 200, isteğin başarılı sonuçlandığı anlamına geliyor. Peki daha detaylı bilgi nasıl alırız?

Elde ettiğimiz sonucun detaylarına şöyle ulaşabiliriz:

>>> requests.get('https://api.collectapi.com/economy/allCurrency').text
...
>>> requests.get('https://api.collectapi.com/economy/allCurrency').headers
...

Bu satırlarda her seferinde tekrardan bir bağlantı kurup, karşı tarafa o anki değerleri sorduk. Bu çoğu zaman verimli bir yöntem değil. İşi kolaylaştırmak için, sadece bir kere requests.get(...) yazdıktan sonra elde ettiğimiz sonucu saklamaya ihtiyacımız var.

Değişkenler ve Temel Veri Tipleri

Değişken, bilgisayar belleğinde saklanan bir değeri temsil eder. Örneğin;

ad = "Aylin"
yas = 26

ad ve yas isminde 2 değişken oluşturduk ve "=" koyarak bu değişkenlere değer atadık.

Python standartlarına göre temel veri tipleri aşağıdaki şekildedir:

  1. String (Karakter Dizisi): Karakter dizilerini belirtmek için kullanılır. Tek veya çift tırnak kullanılarak tanımlanır. Örnek: para_birimi = "bitcoin"
  2. Number (Sayı): Tam sayı, ondalıklı sayı v.b. nümerik değerler için kullanılır. Örnek: para_miktari = 50
  3. List (Liste): Bir veya birden fazla değeri listelemek için kullanılır. Köşeli parantez ile tanımlanır. Örnek: para_birimleri = ["bitcoin", "ethereum", "dolar"]
  4. Boolean (Mantıksal değer): Doğru ya da yanlış olmak üzere iki değere sahiptir. Bu iki değer, True ve False olarak tanımlanır. Örnek: kart_gecerli_mi = True
  5. Tuple (Demet): Yapı olarak listeye benziyor. Listeden farklı olarak değerleri değiştirilemez. Normal parantez ile tanımlanır. Örnek: para_birimleri = ("bitcoin", "ethereum", "dolar")
  6. Dictionary (Sözlük): Anahtar-değer(key-value) ikilisi şeklindeki değerlerin kümesidir. Küme parantezi ile gösterilir. Her bir sözlük elemanı anahtar:değer şeklinde tanımlanır. Örnek: {'para_birimi':'TL', 'miktar':1000} para_birimi anahtarının değeri TL, miktar anahtarının değeri ise 1000 olan iki elemanlı bir sözlük tanımladık.

Veriyi Saklamak

Python'da bir veriyi saklamak için, ona bir isim vermemiz ve araya "=" koymamız gerekiyor:

>>> para_birimleri = requests.get('https://api.collectapi.com/economy/allCurrency')
>>> para_birimleri.text
...
>>> para_birimleri.headers
...

Artık veriyi ilk seferinde sakladık. para_birimleri yazarak ulaşabiliriz.

Bu Veri Neden Çirkin Gözüküyor? JSON Nedir?

Verinin görüntüsü aslında bilgisayarın kolay anlayabileceği, bizim de biraz güzelleştirdikten sonra rahatça algılayacağımız bir biçime sahip. Burada kullanılan notasyona JSON (JavaScript Object Notation) deniyor.

{"result": [{"name": "Dolar", "code": "USD", "buying": 6.5791, "buyingstr": "6.5791", "selling": 6.5845, "sellingstr": "6.5845", "rate": 2.07, "time": "20:40:29", "date": "2020-03-30", "datetime": "2020-03-30T17:40:29.000Z", "calculated": 0}, {"name": "Euro", "code": "EUR", "buying": 7.2483, "buyingstr": "7.2483", "selling": 7.2543, "sellingstr": "7.2543", "rate": 0.9, "time": "20:40:28", "date": "2020-03-30", "datetime": "2020-03-30T17:40:28.000Z", "calculated": 0}, {"name": "\u0130ngiliz Sterlini", "code": "GBP", "buying": 8.1341, "buyingstr": "8.1341", "selling": 8.1432, "sellingstr": "8.1432", "rate": 1.25, "time": "20:40:29", "date": "2020-03-30", "datetime": "2020-03-30T17:40:29.000Z", "calculated": 0}, {"name": "\u0130svi\u00e7re Frang\u0131", "code": "CHF", "buying": 6.8484, "buyingstr": "6.8484", "selling": 6.8563, "sellingstr": "6.8563", "rate": 0.97, "time": "20:39:41", "date": "2020-03-30", "datetime": "2020-03-30T17:39:41.000Z", "calculated": 0}, {"name": "Kanada Dolar\u0131", "code": "CAD", "buying": 4.6441, "buyingstr": "4.6441", "selling": 4.649, "sellingstr": "4.649", "rate": 0.8, "time": "20:40:09", "date": "2020-03-30", "datetime": "2020-03-30T17:40:09.000Z", "calculated": 0}], "success": true}

Yukarıdaki JSON objesini daha anlaşılır biçimde görmek için formatlandırmak istersek, Visual Studio Code gibi bir uygulamayı veya internetten bulacağımız bir online JSON formatter aracını kullanabiliriz. Alternatif olarak https://codebeautify.org/jsonviewer sitesinden de faydalanabiliriz. Bu şekilde baktıktan sonra ihtiyacımız olan fiyatlandırmanın nerede olduğunu bularak yolumuza devam edebiliriz.

Python'da ihtiyacımız olan kısmı almak için:

>>> para_birimleri.json()
...

Tümünü bu şekilde elde ettik. Şimdi içinden istediğimiz kısmını alalım. Önce kaç tane veri olduğuna bakalım:

>>> len(para_birimleri.json())
5

Bu veri türüne Python'da list deniyor. Toplam 5 adet para birimi tablosunu bir arada gördüğümüz anlamına geliyor. JSON görselleştiricide baktığımızda gördüğümüzle aynı kapıya çıktık.

İlk sıradaki tabloyu görmek istersek:

>>> para_birimleri.json()["result"][0]
...

Burada satır gittikçe karmaşıklaşmaya başladı. Bunu basitleştirmek için yine bir isimlendirme kullanabiliriz.

>>> tumbirimler = para_birimleri.json()["result"]
>>> tumbirimler[0]
{'name': 'Dolar', 'code': 'USD', 'buying': 6.5775, 'buyingstr': '6.5775', 'selling': 6.5813, 'sellingstr': '6.5813', 'rate': 2.02, 'time': '20:59:14', 'date': '2020-03-30', 'datetime': '2020-03-30T17:59:14.000Z', 'calculated': 0}

Peki gelen bu süslü parantezle başlayıp bitenler ne? Bunlar Python'da dictionary olarak adlandırılıyor. Mesela, code alanında yazan değeri almak istersek:

>>> tumbirimler[0]["code"]
USD

Uygulamalar

Uygulama olarak bir Telegram botu yazacağız. Bunun için öncelikle terminal ekranından aşağıdaki komut ile Telegram paketini yerel sistemimize kurmalıyız:

pip install python-telegram-bot

Artık uygulamaya geçebiliriz. Şimdi yapacaklarımıza sırayla göz atıp botumuzu yazmaya başlayalım:

  1. Belirli aralıklarla bu değeri almak
  2. Dolar değeri Euro değerinden büyük mü diye bakmak
  3. Telegram'dan bot oluşturmak -> BotFather -> https://api.telegram.org/bot%3CTOKEN%3E/getUpdates

NOT: Bu adrese yaptığımız istek ile Telegram botumuzla ilgili tüm gelişmeleri gözlemliyoruz. Örneğin; biri botunuza mesaj attığı zaman mesaj atan kişinin adını, ne mesaj yazdığını ve chat_id değerini buradan görebilirsiniz.

  1. Python ile bota mesaj göndermek
>>> import telegram
>>> bot = telegram.Bot(token='BOT_TOKEN')
>>> bot.send_message(USER_ID, "Merhaba!")
  1. Dosyaya uygulamayı koymak
  2. Dolar değeri Euro değerinden büyükse botun mesaj göndermesi
import requests
import telegram
import time

bot = telegram.Bot(token='TELEGRAM_TOKEN_BURAYA')

base_currency = 6

while True:
    response = requests.get(f"https://api.collectapi.com/economy/exchange?int={base_currency}&to=USD&base=EUR", 
        headers = {
            "content-type": "application/json",
            "authorization": "apikey COLLECTAPI_TOKEN_BURAYA"
        }
    )

    json = response.json()
    exchange_data = json["result"]["data"][0]
    calculated_dollar = exchange_data["calculated"]

    if calculated_dollar > base_currency:
        bot.send_message(TELEGRAM_CHAT_ID_DEGERI, f"{str(base_currency)} Euro'nun Dolar karşılığı {str(calculated_dollar)} $ dır")
    time.sleep(30)
Python Öğren - Python'a 4 Saatte Başlangıç
Eğitmenler: Güray Yıldırım, Aylin Gümüş, Muhammed Taha Ayan
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].