Python 3

Python ve Selenium Denemeleri

Selenium ile karşılaşmışken, nasıl kullanılır diye biraz kurcalamak istedim. Yaptığım aşamaları, aldığım sonuçları falan da ufaktan paylaşayım dedim.

Selenium, WebDriverları kullanarak farklı tarayıcılarda, sürekli tekrar ettiğimiz testleri otomatikleştiren, sonuçlarını kontrol eden ve günün sonunda hem bizi tekrar tekrar aynı testleri yapmaktan kurtaran hem de sürekli yaparken gözümüzden kaçabilecek noktaları engelleyen yapısıyla öne çıkıyor.

Python, Dict, Hash ve Doğum Günü Problemi

Python’da yer alan dictionary, yani Türkçe’ye çevrilen haliyle sözlüklerle uğraştıysanız, yeni başladığınızda şöyle bir hata almış olmanız oldukça muhtemel: TypeError: unhashable type: ‘list' Bu hatayı biraz araştırdıysanız da, bu veri türünde(sözlüklerde) anahtar olarak listelerin ve bazı farklı veri türlerinin kullanılamayacağına denk gelmişsinizdir. Eğer böyle bir durumla daha önce karşılaşmadıysanız, şimdi ne yapınca karşılaşabileceğinize bir örnek görelim. Önce boş bir sözlük tanımlayalım.

Kivy Course #10 – User Login System With Kivy

In many applications, a login system is applied. As a result of this, in a Kivy course, we believe that we should teach how to make a basic login system with Kivy. To achieve this, the code in following is written. After the login, the program connects to OpenWeatherMap with its API and gets a data from given coordinates in code. After getting data, it shows the temperature in the logged-in screen. There is also a screen that is shown if the username or password does not match.

Kivy Course #6 – Text Input and Input Handling

At the sixth part of the course, we are talking about text input and handling the text in text input box. To make a input chance to the user, TextInput class can be used. Here, a login system is made by making username and password check and afterwards, print the result to the console. Python file: #-*-coding:utf-8-*- from kivy.app import App from kivy.uix.gridlayout import GridLayout from kivy.uix.textinput import TextInput from kivy.

Kivy Course #4 – Box Layout Example

This part is continuing with BoxLayout class of Kivy. BoxLayout is another common layout which is used frequently. It supports both vertical and horizontal orientations and size hints to spare the widgets at specific ratios. The Python code is: from kivy.app import App from kivy.uix.boxlayout import BoxLayout class RootWidget(BoxLayout): pass class kutuApp(App): def build(self): return RootWidget() if __name__ == "__main__": kutuApp().run() And the Kivy Language file is: <RootWidget>: orientation: "vertical" BoxLayout: size_hint_y: 0.

Kivy Course #3 – Grid Layout Example

In this section, layouts are introduced with more details and images of them are shown. Grid layout is one of the most known widgets and the code may be found below. The main Python file: from kivy.app import App from kivy.uix.gridlayout import GridLayout class RootWidget(GridLayout): pass class izgaraApp(App): def build(self): return RootWidget() if __name__ == "__main__": izgaraApp().run() And the Kivy Language file which should be named as izgara.kv: <RootWidget>: cols: 3 rows: 2 Button: text: "

Kivy Course #2 – More Buttons With Kivy Language

At the second part of the course, more buttons are added to root widget and Kivy Language is utilized while adding them. From this part, view section of the codes are seperated in a .kv file. You can find the codes below. Our main python file: from kivy.app import App from kivy.uix.boxlayout import BoxLayout class RootWidget(BoxLayout): pass class uygulamaApp(App): def build(self): return RootWidget() if __name__ == "__main__": uygulamaApp().run()   Name this as uygulama.

[HowTo] [Python/Kivy] Building APK With Buildozer

In the previous post, how to install Kivy and Buildozer on Ubuntu is examined. In this post, you will find stages making APK files on Ubuntu with Python and Kivy using Buildozer. If you have followed the previous tutorial, you have already installed Buildozer on your virtual environment; however, it is not ready to making APK files for now. To test this statement, create a folder with a very basic main.py file(example from Kivy.org mainpage):

[HowTo] Install Kivy and Buildozer on Ubuntu 15.04

Installing Kivy and building an apk file is the fundamental step of coding Android applications with Python. In this post, Buildozer is used for building apk, installing sdk, ndk and other dependencies automatically.

All commands on this post are applied on a fresh installed and newly updated (02/07/2015) Ubuntu 15.04. Use it at your own risk.

Python Kivy Slider, Color and Canvas Example

Working with kivy often requires writing canvas codes which are managing the appearance  before, during and after the content is drawn. In this example, one Kivy Slider is used for getting color value between 0 and 1 and in the same time there is a Kivy Label which contains Slider’s value and updated automatically with the help of automatic property binding on Kivy.

Python Kivy Button, Property and BoxLayout Example

In this post, you are able to find an example of Kivy Framework consists of a button and two text label in a boxlayout oriented vertically. There are two files and both are required to run this program. This program is suitable for both mobile and desktop versions of Kivy and has ability to resume at gaining focus when screen is locked or for another reason the program is put in background.

Arduino ile Python İletişimi

Arduino videolarına ara verip, Python ile Arduino arasındaki iletişime geçerek 8 yeni video yayınladım. Bu videolarda, pyserial modülünün kullanımından başlayıp, bilgisayar üzerinden görsel bir Python arayüzüyle 2 servo motorun kullanımına kadar geliyoruz. Toplamda 1 saati biraz aşan ufak bir video serisi oldu. Hazırlarken aldığım keyfi izlerken fazlasıyla almanız dileğiyle. Videolar:

11. Ders – Python’da Koşullu İfadeler & if Yapısı

12. video, 11. konuda Python’da koşullu ifadeleri, if yapısını işliyoruz. Ayrıca mantıksal ifadeler de burda kullanıldığı için giriş yapmış oluyoruz. Görsel Python eğitiminde yarıya bu video ile gelmiş oluyoruz.

10. Ders – Python’da List Comprehension

Python’da liste, demet ve sözlük gibi yapıları döngü ile oluştururken, hem kodu kısaltacak hem verimi artıracak bir yapı mevcut. Buna list comprehension deniyor. Bu videoda bu konuyu dilim döndüğünce anlatmaya çalıştım. List comprehension, for döngüsü, önceki videolar veya aklınıza takılan alakalı soruları buradan yazabilir veya mail atabilirsiniz.

6. Ders – Python’da Liste Methodları

Ders 5'ten6. videolu Python eğitimi(tutorial’ı ders olarak çevirmekten vazgeçtim, eğitim diyorum) videosunda listelere yaptığımız girişin ardından, listelerin methodlarını inceliyoruz. Önceki derste gördüğümüz dir(liste) fonksiyonunun verdiği çıktılar doğrultusunda birçok methodu örneklerle açıklıyoruz.

Bu arada önemli not: 15.02.2014 tarihi itibariyle 20’den fazla Python videosu Youtube kanalında yayında ve tamamında Python 2.7 kullanıldı. Sık sık Python 3’te bazı komutların çalışmadığıyla ilgili sorular geliyor, 2 ve 3 arasında bazı farklılıklar var. O yüzden videoları uygularken Python 2 de olmanızı öneririm. Sonrasında Python3’e geçmek pek zaman alan bir iş değil. İlerleyen zamanlarda ondan da bahsetmeyi planlıyorum.

Python ile Sezar(Ceasar) Şifrelemesi – Kullanıcı Arayüzü

Şifreleme yaparken karşılaşılabilecek en basit algoritmalardan birisi Sezar(Ceasar) algoritması. Bu algoritmanın anlatımına buradan ulaşabilirsiniz. Basit anlamda harfleri 3’er kaydırarak uygulanıyor. Kodu yazarken 3 sağa kaydırdık, isterseniz kod üzerinde ilgili kısımlarda – ve + işaretlerini değiştirerek sola kaydırabilirsiniz. Wikipedi’de 3 sola kaydırma istiyor. Kuralına tam uygun olsun derseniz bu dediğimi dikkate almanızı öneririm.

Python SystemRandom ile Rastgele Sayı Üretmek

Python’da rastgele sayı üretebilmek için halihazırda random modülünden faydalanabiliyoruz. Bu modül rastgele sayı üretirken öncelerden Mersenne Twister adlı bir yöntem kullanıyormuş.[1] Dökümantasyonunda belirtildiğine göre 53 bit kesinlikte float türünde rastgele sayılar üretebiliyormuş.

Buraya kadar bakınca güzel gözüküyor. Şimdi bir adım öteye gidelim. Bu yöntem çok kullanılmakta ve Python altında hızlı çalışması için C ile yazılmış.

Bu algoritmanın periyodunun uzun olması ile, verdiği sayının güvenilirliği arasında bir orantı olduğu [2]’de belirtiliyor. Yalnız rastgelelik testlerinden bazılarında başarısız olduğu da yine [2]’de belirtilmiş. Ayrıca [1]’de de şifreleme uygulamalarında kullanılmaması gerektiği konusunda kullanıcılar uyarılıyor. Bu durumda başka bir çözüme ihtiyacımız olacak.

Programlama Dili Seçimi

Youtube’da yer alan Python derslerinden dolayı olsa gerek, birçok kişi Facebook üzerinden veya mail ile dilin ne işe yaradığı hakkında sorular sormaya başladı. Bunun üzerine ben de toptan bir cevap niteliğinde bu yazıyı yazma gereği duydum.

İlk olarak, “en iyi programlama dili” diye bir şey yok. Bulunduğunuz gün içerisinde yapmanız gereken işi en hızlı ve en verimli şekilde yapan dil, o gün sizin için en iyi programlama dilidir. Yani Python kodu rahat yazılıyor diye mikrodenetleyiciye Python çekirdeğini gömmeye çalışmak mantıklı bir düşünce değil(şu anki mikrodenetleyiciler için). Diğer yandan, görsel basit bir hesap makinesi yazıp kendi işinize özel basit birkaç fonksiyon ekleyecekseniz de C’nin kahrını çekmenize gerek yok.

Kim nerede görüyor bilmiyorum ama, son zamanlarda oyun programlamayla ilgili de oldukça yoğun şekilde soru geliyor. Açıp elle tutulur bir oyun yazmışlığım yok ama tek dille sınırlı kalınmıyor bu işlerde. Ayrıca, kodun büyük çoğunluğunun C++ ile yazıldığını da biliyoruz(native C++).

Android İçin Online Satranç Oyunu

2Asgard Projesi için yazdığım Android uygulaması, proje yalan olunca ne zamandır elimde bekliyordu. Bu hali, geliştirilmeye açık olduğuna inandığım baştan yazılmış şekli. chess.py’nin yapımcısından da, öğrenci projesinde kullanılacak diye izin aldım. Benim düzenlediğim hali ile orijinali arasında, eklenen pek bir kod olmasa da çıkan çok kod oldu. Satranç notasyonunu basitleştirmek adına, chess.py’nin notasyon parse eden kısımlarını kırptım ve Android uygulamasına direk bağladım.

1Yenilikler:

– Artık karşı tarafın taşlarını elleme hakkınız yok. Bunun zaten ilk sürümde de olması gerekiyordu, geç de olsa geldi. Konsolda uyarı mesajı da veriyor, rahatsız olanlar yorum satırı yapabilir.

– Seçilen taşın arkaplanı siyah oluyor, hangi taşın seçildiği artık belli.

– Taş, istenilen yere gidemiyorsa yanan arkaplan eski haline dönüyor.

– Girenleri 2’li olarak ayrı odalara atıyor(odadan çıkan olursa diye bir önlem almadım, proje amacı sadece 2 kişinin oynamasıydı ve bu bile fantezi oldu). Binlerce kişi aynı anda oyunu oynayabilir.

– Siyah ya da beyaz taraf seçme özelliği geldi. Kullanıcılar istedikleri tarafta yer alarak buna uygun odaya yerleştiriliyor.- Bu saydıklarımla uğraşmak istemeyenler için de sadece tek oyunun döndüğü ve giren herkesin seçtiği tarafı oynatabildiği bir sunucu sürümü de hazırda var.

– Sunucuyu çalıştırdığınız bilgisayarda Python’un daemon modülü yüklü olursa iyi olur, sunucu arkaplanda çalışabiliyor. Böylece SSH’ı sunucu çalıştığı sürece açık tutma derdi kalmadı.

– Sunucu için herhangi bir kütüphane vs. kullanmadığım için hata ayıklamayla yeteri kadar ilgilenememiş olabilirim, ama henüz bir sıkıntı çıkarmadı. Profesyonel bir amaç için twisted kütüphanesiyle güzel bir düzenlenmesi gerekebilir.

5. Ders – Listelere Giriş, dir() ve help() Fonksiyonları

5. görüntülü Python anlatım dersimizde Python’da liste veri türünü görüyoruz. Farklı türlerden değişkenleri içerisinde tutabilen listelerde herhangi bir boyut sınırlaması yok. İstediğimiz gibi eleman ekleyip çıkarabiliyoruz. Listelerin nasıl tanımlanacağı, neden gerekli olduğu üzerine videolu anlatımda elimden geldiğince örnekler üzerinden gitmeye çalıştım. Bunların ardından, dir() ve help() fonksiyonları ile sadece listeler değil, elimizdeki tüm veri türleri hakkında bilgileri nasıl edinebileceğimizi görmüş olduk. Video aşağıda, hepimize kolay gelsin.

2. Ders – Temel Hesaplamalar ve print İfadesi

Merhaba arkadaşlar. 2. dersimizde Python ile temel hesaplamalara bakıyoruz. 4 işlem ve bunlara ek olarak mod ve üs alma işlemlerine bakıyoruz. Ayrıca print ifadesi ve tırnak kullanımına da giriş yapıyoruz. Sorularınızı her zaman buradan ya da:

http://www.ufakseyleratolyesi.com/sorucevap/

Adresinden sorabilirsiniz. Umarım faydalı olmuştur. Herkese kolay gelsin.

Android Satranç Uygulaması – Asgard Projesi

asgard-android-projesi-oyunAsgard Projesi için hazırlamakta olduğum Android uygulamasının kaynak kodları. İlk mobil uygulama olduğu için kodlar çok dağınık. Yakın zamanda baştan yazmam gerekecek(en azından 2. uygulamayla karşılaştırınca fark gözüküyor).

Notlar:

– Program Windows, Linux, MacOS, Android ve iOS işletim sistemlerinde değişiklik yapılmadan çalışabilir(Apple ürünlerinde denemedim, derlemeyi bilen birileri derleyip haber verirse hep beraber sonucu görürüz.) Windows için .exe uzantılı hale getirilmesi de birkaç dakikalık işlem sonucu mümkündür, uğraşmak isteyen olursa “packaging kivy application for Windows” araması işlerini görecektir.

– Sunucu bağlantı kodları kullanılan framework sitesinden alınmış ve deneme amaçlı olarak eklenmiştir. Sunucuya oynanan konumun verilerini yollamaktadır. Sunucu kaynak kodunu güvenlik sebebiyle bir süre daha paylaşamıyorum ama herhangi basit bir sunucuyu istediğiniz dilde yazıp 4444 portundan(ya da istediğiniz porttan açıp programdan portu değiştirip) kurarsanız direk gözlemleyebilirsiniz. Ama bu gerekli değil çünkü sunucu bağlantısı olmazsa oyun yine de başlıyor.(Tekrar geliştirme sebebim 1).

– Oyunu başlattıktan sonra menüye dönünce problem ortaya çıkıyor(Sebep 2, menü eklemeye uygun olmayan kod yapısıyla girişmek). Normal bir şekilde oyuna başlayınca bir sıkıntı yok.

– Oyunda iki tarafı da çalıştıran kişi kontrol ediyor(test etmek için tek kişilik daha iyi bir çözüm şu anlık bulamadım).

– Taş renkleri pek iç açıcı olmayabilir (RGB kodları biraz uydurma oldu.).

– APK halini BURADAN indirebilirsiniz. (Neden 8mb? Python çekirdeği+birkaç kullanılan ve kullanılmayan kütüphaneler derlemeye dahil.)

– Geri dönüşler programcının yaşam kaynaklarındandır, ağır eleştirilere açığım.

Python’da Decorator Ne İşe Yarar?

Python ortamında decorator tanımlamak için örnek kod. Amaç, fonksiyon tanımlayan fonksiyon oluşturmak ve daha sonra bu fonksiyonu her çağırdığımızda bir değişkene yeni fonksiyon tanımlamış olmak. Burada, kullanıcının kendi fonksiyonunu tanımlaması dahi mümkün hale geliyor. exec ile(evet, biraz riskli bir fonksiyon) kullanıcıdan aldığımız bir fonksiyonu bu şekilde örneklemek mümkün. Tek fonksiyon için çok geremese de artan sayılara cevap verecek nitelikte. Daha önce Flask framworkünde decoratorlere rastlamıştım ama şimdi anlamak nasip oldu. Bu kodun daha ilkel bir haline dökümantasyonun en başındaki tutorial kısmında rastlamıştım.

Python3 Kullanarak Merkezi Farklar Yöntemiyle Sayısal Türev

# Merkezi Farklarla Sayısal Türev # @Author: Güray Yıldırım - www.gurayyildirim.com.tr # @Date: 13.10.2012 from decimal import Decimal function = input("Enter the Function in Python Format: ") request = """ def f(x): return %s """ %function exec(request) def getDiff(x,h): return (f(x+h)-f(x-h))/(2*h) x = Decimal(input("At Which Value the Function Will Differentiate?: ")) for i in range(10,28,2): h = Decimal(10**(-i)) diff = getDiff(x,h) print("Value of Diff: %.16f "%diff, "Value of %8e: "%h) Kodlarla veya programlama ile ilgili sorularınızı http://www.

İleri ve Geri Farklar Yöntemi İle Türev Hesabı

dereceden türev almak için(elbette istediğimiz dereceden alabiliriz, programı basit tutmak istedim) kullanacağımız yöntemlerden olan ileri ve geri farklar yöntemini bir bilgisayar programı haline getirmek istedim. Python3 ile yazdığım koda fonksiyonu x^2+5*x+3 gibi ve hesaplamak istediğiniz değeri giriyorsunuz ve size türev değerini h değişkeninin farklı değerlerine göre veriyor. Ayrıca aradaki hatayı da hesaplayıp ekrana döküyor. Şu an tek sorunu h’ı 10 üzeri -20 lerden daha düşük seviyelere taşıyamıyor olması. Ama bu haliyle de hata ortalama 10 üzeri -16 civarında dolaşıyor(mutlak hata).

Yenilikler

Uzun zamandır oturup bir blog yazamadım. Son zamanlarda olanları bir özet geçeyim: Ufak Şeyler Atölyesi blogu: Site şu an tekrar aktif. Öncekinin aksine, Emre’nin önerisiyle ortak bir blog açtım. Şu an sadece ben yazıyor olsam da, ilerde bir gün hareketleneceğinden ümidimi kesmedim. Siteyi en başta alma ve açma amacım olan program yayınlama fikrinden de vazgeçmiş değilim, ama büyük birkaç uygulama, ya da işe yarar bir şeyler yapmaya başladıktan sonra o konuya yönelmesini sağlamak şu an için daha iyi duruyor.

Solution: cannot verify github.com’s certificate, issued by `/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV CA-1′:

I was trying to making an .APK file for Android using python-for-android provided by tito on Github. When I completed the installation of prequisities and start the process of makin the .apk file of example kivy application(see www.kivy.org for examples), I came across this issue: cannot verify github.com’s certificate, issued by `/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV CA-1′: I tried the same on other linux machines whose operation systems are Ubuntu and Linux Mint and both gave me the same error.

Python ile Paralel Port Kontrolü – Video

Pyparallel modülü yardımıyla Python’u kullanarak bilgisayarımızın paralel portunu kullanabiliriz. Bu yazıda bunun hakkında bilgi vereceğim. Öncesinde, paralel port yapısı hakkında kısa bir bilgiye buradan ulaşabilirsiniz. Pyparallel modülünün eski olduğu için şu an geliştirildiğini söyleyemiyorum. Bunun sebebi ise yeni bilgisayarlarda paralel port çıkışının olmaması, iyi ihtimal seri port çıkışının olması ve bildiğimiz üzere USB yaygınlığı. Bu aşamada öncelikle şunları belirtelim. İlk olarak, elimizde bilgisayarımızın herhangi bir portuna giden .dll dosyası mevcutsa(mesela C ile yazılmış, sürücüleri kurulmuş bir halde), bu dosyalardaki fonksiyonlara Python üzerinden erişebiliriz.

Yazılım Özgürlüğü Günü 2012 Kutlamaları

Blog üzerinden ilk defa bir katılım çağrısı yapıyorum sanırım. Ama gerçekten güzel bir çağrı olduğunu düşünüyorum. Yazılım Özgürlüğü Günü 2012 kutlamalarına, yazılıma ilgi duyan, duymayı düşünen veya duymayan herkesi davet ediyorum. Eli bilgisayar/ cep telefonu veya yazılımla kontrol edilen herhangi bir elektronik cihaz tutan herkesin bilmesi gereken bir gerçekten bahsediyoruz. Ne kullandığımızı, biz bir işlem yaparken arka tarafta neler olduğunu bilme özgürlüğümüzden. Son bir not olarak düşeyim, herhangi bir siyasi amaç kesinlikle yok.

Messenger v0.3 Sunucusu Hazır

Başlıkta v0.3 dedim, aslında oturup yeni bir messenger yazdım. Hatta IRC, Messenger arası bir program, ya da program olma yolunda ilerleyen kodlar oluştu. Kodlar dedim çünkü tamamlanınca sistemde kayıtlı olan kişilerin toplu konuşmasını sağlayan bir program olacak. v0.2 nin algoritma yapısı üzerinde daha çok çalışmak gerektiğinden dolayı bunu bitirmeyi planlıyorum. 0.2 kurulacak olan kulüpten isteyenlerle birlikte yürüyecek. Lafı fazla uzatmadan, sunucu az çok hazır durumda. Üzerine istemciyi yazmak kaldı. Sunucunun veritabanı kısmı v0.

True, False ve Karşılıkları ile Matematiksel Denemeler

Python altında çalışırken True’nun 1, False’ın da 0’a karşılık geldiğini biliyoruz. Bunu type() ile onaylayamasak da, şöyle de bir gerçek var: Python altında 0 olmayan tüm sayılar True kabul ediliyor, boş olmayan listeler, içlerindeki tek eleman 0 bile olsa True kabul ediliyor. Bu sadece listeler için de geçerli değil, demetler, sözlükler ve kümelerde bu durum aynen geçerli. Şimdi değişik olduğuna inandığım birkaç işlem üzerinde deneme yapalım. >>> True True >>> False False >>> True-False 1 >>> True+False 1 >>> True*False 0 >>> True/False Traceback (most recent call last): File "

Python3 ile Değişken ve Diğer Nesnelerde Tür Kontrolü

Elimizdeki bir değişkenin sayı/yazı olma durumunu kontrol etmek istediğimizde uygulayabileceğimiz 3 alternatif var, en azından şu ana kadar karşılaştığım ve aklıma direk gelen 3 alternatif şekil var. Bunları birer örnek üzerinde görmeden önce, kullanımıyla ilgili yakın tarihten bir örnek vereyim, mesaj sunucusu şifre yanlışsa istemciye 100 gibi bir sayı yolluyor, doğruysa kullanıcının bilgilerini yolluyor. Bu durumda gelen verinin türü(json decode edildikten sonra) integer ise giriş yapılamıyor, liste ise giriş yapılmış oluyor(biraz basit kaçtı bu şekilde ama şimdilik böyle kalsın, detay için sunucu-istemci kodlarına bakabilirsiniz, blogda mevcut).

Python3 ile Messenger Uygulaması (Sunucu+İstemci Birlikte)

Merhabalar, bu yazıda geçen günlerde derlediğim sunucu, istemci uygulamasını paylaşacağım. Öncelikle ilk sürüm olduğu için eksikleri olabilir. Çalışması ise kısaca, sunucu uygulamasını istediğiniz bir sunucu bilgisayarda başlatıyorsunuz(özel bir bilgisayar değil, sadece olayları yönetsin yeter). Port vs. sorarsa varsayılan olarak 4444 ayarlandı, girebilirsiniz. Yeni sürümde otomatik port yönetimi üzerinde çalışıyorum. İstemciyi çalıştırdığınızda sunucunun IP’sini isteyecek. Onu girdiğinizde ağa bağlanmış olacaksınız. Bunların dışında son olarak, istemcide yeni mesaj gelip gelmediğini kontrol etmek için mesaj göndermeniz gerekiyor.

Python Blogu Buraya Taşındı

Yaklaşık 1 senedir Python.GurayYildirim.com.tr adresinde bulunan blogu artık güncellememe kararı aldım. Yeni kod örnekleri ve programlar artık buradan paylaşılacak. Bunun dışında, hazırlamayı planladığım video anlatımlar da ufakşeyleratölyesi üzerinden veya buradan olacak. Google üzerinden gelebilecek ziyaretçiler için ise python.gurayyildirim.com.tr uzun bir süre daha faaliyet gösterecek.

1’den 360’a Kadar Tüm Sayıların Sinüs, Cosinüs, Tanjant ve Cotanjant Değerleri

Daha önce yazdığım math modülü fonksiyonlarından trigonometrik olanları kullanarak birkaç satır kodla uzun bir listeyi Python yardımıyla nasıl hazırlayacağımızı görelim. Range fonksiyonu sayesinde 1’den 360’a kadar olan sayıları sıra sıra for döngüsüne sokalım ve hepsinin değerlerini yazdıralım. Kodlarımıza bakacak olursak:

#-*-coding:cp1254-*-

import math
import time

a=time.time()
for i in range(0,361,1):
    radyan=math.radians(i)
    print "Sinüs %s = %s" %(i,math.sin(radyan))
    print "Cosinüs %s = %s" %(i,math.cos(radyan))
    print "Tanjant %s = %s" %(i,math.tan(radyan))
    if math.tan(radyan)==0:
        print "Cotanjant %s = Sonsuz" %i
        continue
    print "Cotanjant %s = %s" %(i,1/math.tan(radyan))
b=time.time()
print "Süre: ", (b-a), "Saniye."

Programın verdiği çıktıya bakacak olursak:

İlk Projemiz: Matematik Problemi Çözelim

Python ile adam akıllı ilk projeye yavaştan başlıyorum. Bu projede yapacağımız şey tam olarak kullanıcıdan işçi ya da havuz problemi alıp önce yazılanın işçi mi havuz mu olduğunu belirlemek, daha sonra ise o problemdeki verileri ayrıştırarak sonuca ulaşmak. Pek de kolay olmayacak ya da hiç tamamlanamayacak bir proje üzerinde çalışıyor olabilirim. Neyse, lafı fazla uzatmadan başlayalım. İlk günkü çalışmadan istediğim sonucu aldığımı söylersem sizi kandırmış olurum. Henüz çözemediğim hata mesajlarıyla hala uğraşıyorum.

Python ve Urllib ile Bot Yapımı

Kullanmak nasip olmadı ancak bir siteden verileri çeken bir bot yapmıştım. Kodları verip kısaca açıklayayım. Tkinter kullanmıştım ancak ekleme sayısı düzgün çalışmıyor. Başlangıç numarasının verildiği dosyadan veriyi alıp program kapatılana kadar seri bir şekilde ekliyor. Verileri de re modülünün nimetlerinden yararlanarak ayrıştırdım. Aslında çok kısa sürede binlerce veri çekebiliyor ve çekilen sitenin de sağlığı düşünülürse ana döngüye time.sleep() eklemek mantıklı geldi. Kendi sitenizse bunu kaldırıp işleminizi hızlı yapabilirsiniz tabii ki sizin seçiminiz.

Python ile Tek Bilinmeyenli Denklem Çözme

Bugünüme mal olan çalışma oldu aslında. Regular expressions ile biraz sıkıntı yaşamamı sağlamış olsa da sonunda çalıştığını görmek gerçekten mutlu etti. Tabii sorunlar olabilir çok fazla test edemedim bildirirseniz becerebildiğim kadarıyla düzeltirim. Basit olarak nasıl çalıştığını söyleyeyim. tekbilinmeyen() fonksiyonuna tek veya ilk parametre olarak denklemi yazıyoruz. Mesela tekbilinmeyen(“3x+5=43227x-4377″) şeklinde. Bunun dışında tekbilinmeyen fonksiyonuna 2 parametre daha atama şansımız var. Bunların ikisi de işlem sırasında ayıklanan öğeleri gösteriyor. Biri yanında x olanları diğeri ise sabit değerleri.

Python’da İşçi Problemi Çözüm Programı

Matematik dersinin vazgeçilmezlerinden olan işçi problemlerini çözen ufak bir program yapmak istedim. Çok fazla deneme şansım olmadı hata/sorun vs. olursa bildirirsiniz. Genel çalışma yapısını kısaca açıklayayım. Program önce kullanıcıdan soruda verilen bilgileri alıyor. Mesela a günde b tane işçi c kadar iş yapar şeklinde sayıyla bunları giriyorsunuz. Ardından istenen kısmı “x” olarak girmenizi istiyor ve aldığı sayıları hangisinin x olacağı belli olmadığı için integer a çeviriyor. x e göre ifli bir yapıyla hangi bilinmeyenin istenmediğini buluyor ve ona göre ilgili fonksiyona bilgi gönderiyor.

Python ile Üçgen Prizma, Dikdördgen Prizma ve Kürenin Hacmini Hesaplama Programı Kodları

Python 2.7 ile yazdığım program sayesinde math modülünden alınan ayrıntılı pi değeri ile kürenin hacmini detaylarıyla hesaplayabilirsiniz. Ayrıca üçgen prizmanın hacmini üç kenar uzunluğunu ve yüksekliğini verdikten sonra u formülüyle hesaplıyor. Windows altında çalışıyor linux’da sorun veriyor sanırım tam deneme şansım olmadı açıkçası. Bu arada dikdördgen prizmanın hacmini de bildiğimiz üzere verilen 3 uzunluğu çarparak buluyor. Umarım işinize yarar. hacim.pyw dosyası(isterseniz py olarak da kaydedebilirsiniz ancak komut penceresi de açılacaktır.)

Python ile Silindir Hacmi Hesaplama

Pi sayısının kullanımı ile ilgili işe yarar bir döküman hazırlamak amacıyla bir silindirin hacmini Python ile hesaplamaya karar verdim. Amacımız kullanıcıdan taban yarıçapını ve yüksekliği alarak (pi*(r^2)*h) ifadesi yardımıyla silindirin hacmini bulmak. r=input("Lütfen Taban Yarıçapını Giriniz: ") h=input("Lütfen Silindir Yüksekliğini Giriniz: ") import math print "Silindirin hacmi: ", math.pi*(r**2)*h," ifadesine eşittir. Görüldüğü üzere pi sayısını kullanmak için math.pi ifadesini oluşturmak gerekiyor.

Math Modülünü Kullanarak Üs Alma

Python’u normalde kullanırken ****** işlemini kullanarak işlemle ilgili yazıda belirttiğimiz gibi kolayca üs alabiliriz. Ancak float olarak üs sonucunu elde etmek istersek ve bunu bir fonksiyona döküp daha kullanışlı hale getirmek istersek math modülünde bulunan math.pow() fonksiyonunu gönül rahatlığıyla kullanabiliriz. import math print math.pow(2,9) Fonksiyonu inceleyecek olursak ilk argümana taban, ikinci argümana üs değerini veriyoruz. Yani kısaca kullanımı; math.pow(,<üs değeri>) şeklinde.

Python ile Ftp’ye Bağlanmak

Python’da bulunan ftplib modülü yardımıyla istediğimiz bir FTP sunucusuna bağlanabilir ve giriş yapabiliriz. Bu yazıda bağlantının nasıl oluşturulabileceğini kısaca anlatalım. import ftplib a=ftplib.FTP("www.gurayyildirim.com.tr") Aslında bağlantımızı sağlamış olduk. Bir de sunucunun bağlantı ardından gönderdiği welcome message adı verilen mesajı görüntüleyelim. Burada sunucu hakkında kısa bilgilere ulaşmamız da mümkün olabilir. print a.welcome Örnek olarak bana gelen sonuç: 220———- Welcome to Pure-FTPd [privsep] [TLS] ———- 220-You are user number 3 of 50 allowed.

Python’da Sınıf(Class) Tanımlama

Python’da sınıf tanımlama olayı oldukça basittir. Genel olarak kalıbı vermemiz gerekirse class yapısı hakkındaki örneğimize bakalım. class sinifin_adi: #YAPILACAK FONKSİYON VE DEĞİŞKENLER Aslında yapacağımız işlemler gördüğünüz kadar basit, başlarda biraz yorucu ve karışık gelmesine rağmen zamanla nesnelerin kullanışlı olduğunu görmek zor olmuyor.