Archive for the 'Python' Category

Python ile Hesap

Friday, May 4th, 2007

Sayılar

¸Simdi bazı basit komutlar deneyelim. Yorumlayıcıyı çalı¸stırın ve birincil komut satırının gelmesini bekleyin >>> Yorumlayıcı basit bir hesap makinesi olarak i¸s görürebilir: istedi ˘giniz herhangi bir ifadeyi yazın ve yorumlayıcı sonucu verecektir. ˙I¸sleçler ( +,-,*,/ ) ço ˘gu programlama dillerindekine benzer çalı¸sır (Pascal ve C de oldu ˘gu gibi mesela) . Ifadeleri gruplamak için parantezler de kullanılabilir. Örnekler:

2+2

4

>>> # Bu bir açıklama

2+2

4

>>> 2+2 # bu da komutlarla aynı satırda bir açıklama

4

>>> (50-5*6)/4

5

>>> # Tam sayı bölme i¸slemlerinde ise:

7/3

2

>>> 7/-3

-3

 

C de oldu ˘gu gibi e¸sit i¸sareti(=’) bi de ˘gi¸skene de ˘ger atamak için kullanılır. Atamanın de ˘geri çıkı¸sta yazılmaz:

>>> genislik = 20

>>> yukseklik = 5*9

>>> genislik * yukseklik

900

 

 

 

Karma¸sık sayılar da desteklenmektedir. Sayıların sanal kısımla j veya J eki ile yazır. Gerçek kısmı sıfır ol- mayan karma¸sık sayılar (gerçek  + sanalj) ¸seklinde yazılırlar ya da complex(gerçek, sanal fonksiyonu ile yaratılırlar.

>>> 1j * 1J

(-1+0j)

>>> 1j * complex(0,1)

(-1+0j)

>>> 3+1j*3

(3+3j)

>>> (3+1j)*3

(9+3j)

>>> (1+2j)/(1+1j)

(1.5+0.5j)

Karma¸sık sayılar daima iki kayar noktalı sayı ile ifade edilirler; biri gerçek di ˘ger sanal kısım için. Z gibi bir karma¸sık sayının gerçek ya da sanal kısımlarına eri¸smek için Z.real ve Z.imag kullanılır.

     a=1.5+0.5j

>>> a.real

1.5

>>> a.imag

0.5

Tam sayı veya kayar noktalıya dönü¸stürme fonksiyonları (    float(), int() ve long() ) karma¸sık sayılar için çalı¸smazlar; bir karma¸sık sayıyı gerçek bir sayıya dönü¸stürmenin do ˘gru bir yolu mevcut de ˘gildir. abs(z) ile karma¸sıayının büyüklü ˘günü ve z.real ile gerçek kısmını elde edebilirsiniz.

 

 

>>> a=3.0+4.0j

>>> float(a)

Traceback (most recent call last): File “<stdin>”, line 1, in ?

TypeError: can’t convert complex to float; use e.g. abs(z)

>>> a.real

3.0

>>> a.imag

4.0

>>> abs(a)  # sqrt(a.real**2 + a.imag**2)

5.0

>>> 

 

Etkile¸simli kipte son yazdırılan de ˘ger _ de ˘gi¸skenine atanır. Yani Python’u hesap makinesi olarak kullanırken bazen i¸slemlere ¸su ¸sekilde devam etmek daha kolaydır :

 

vergi= 17.5 / 100

>>> fiyat= 3.50

>>> fiyat * vergi

0.61249999999999993

>>> fiyat + _

4.1124999999999998

>>> round(_, 2)

4.1100000000000003

>>> 

Bu de ˘gi¸sken (_) kullanıcı tarafından salt okunur olarak kabul edilmelidir. Buna kasıtlı olarak de ˘ger atamayın. Bu aynı isimli bir yerel (local) de ˘gi¸sken yaratır.

 

 

Karakter Dizileri

Sayılara  ek  olarak,  Python  karakter  dizileri  üzerinde  de  i¸slemler  yapabilir.  Karakter  dizileri  farklı  ¸sekillerde  ifade edilebilir. Tek veya çift tırnak i¸sareti içine alınabilirler:

>>> ’karakter dizisi’

’karakter dizisi’

>>> “Python\’un gücü”

“Python’un gücü”

>>> “doesn’t”

“doesn’t”

>>> ’”Yes,” he said.’

’”Yes,” he said.’

>>> “\”Yes,\” he said.”

’”Yes,” he said.’

>>> ’”Isn\’t,” she said.’

’”Isn\’t,” she said.’

Karakter dizileri birkaç ¸sekilde birden fazla satıra yayılabilirler. Yeni satırlar ters e ˘gik çizgi ile ¸söyle gösterilebilirler:

merhaba = “Bu C de de kullandı˘gınıza benzer\n\

birkaç satır kaplayan bir karakter dizisi.\n\ Yeni satırın ba¸sındaki

girintinin belirgin oldu˘guna dikkat\

edin.\n”

print merhaba

 

 

import string

>>> ’str’ ’ing’ # <- Bu do˘gru

’string’

>>> string.strip(’str’) + ’ing’ # <- Bu da do˘gru

’string’

>>> string.strip(’str’) ’ing’ # <- Bu geçersız !!! File “<stdin>”, line 1, in ?

string.strip(’str’) ’ing’

^ SyntaxError: invalid syntax

 

 

 

C de oldu ˘gu gibi, Pythonda da karakter dizileri indislenebilirler ( index ). Karakter dizisinin ilk karakterinin indisi sıfırdır. Pythonda ayrı bir karakter veri tipi yoktur. Bir karakter tek karakterli bir karakter dizisidir. Icon dilinde (70li yıllarda Ralph ve Marge Griswold’ün geli¸stirdi ˘gi Pascal benzeri bir SNOBOL4 türevi) oldu ˘gu gibi karakter dizilerinin bölümleri dilim gösterimi “[ : ]” ile ifade edilebilirler.

>>> kelime[4]

’o’

>>> kelime[0:2]

’Al’

>>> kelime[2:4]

’oo’

 C dilinden farklı olarak, Pythonda karakter dizileri de ˘gi¸stirilemezler. Bir karakter dizinin indislenen bir konumuna de ˘ger atamaya çalı¸smak hatadır:

>>> kelime[0] = ’x’

Traceback (most recent call last): File “<stdin>”, line 1, in ?

TypeError: object doesn’t support item assignment

>>> kelime[:1] = ’Splat’

Traceback (most recent call last): File “<stdin>”, line 1, in ?

TypeError: object doesn’t support slice assignment

Listeler

Pythonda di ˘ger veri tiplerini bir gruba almayı sa ˘glayan birkaç  bile¸sik veri tipleri vardır. Bunların en kullanı¸slı olan- larından biri listelerdir. Listeler kare parantez içine virgül ile birbirinden ayrılmı¸s de ˘gerlerden (eleman) olu¸surlar. Liste elemanlarının aynı tip olmagerekmez

>>>a = [’salam’, ’zeytin’, 100, 1234]

>>> a

[’salam’, ’zeytin’, 100, 1234]

 

Listeler de karakter dizileri gibi indislenebilir. ˙Indisler sıfırdan ba¸slar. Listeler dilimlenebilir, birle¸stirilebilir vs..

 

>>> a[0]

’salam’

>>> a[3]

1234

>>> a[-2]

100

>>> a[1:-1]

[’salam’,100]

>>> a[:2] + [’yumurta’, 2*2]

[’salam’,’zeytin’, ’yumurta’, 4]

>>> 3*a[:3] + [’Oley!’]

[’salam’, ’zeytin’, 100, ’salam’, ’zeytin’, 100,’

salam’,zeytin’,100,’Oley!’]

 

De ˘gi¸stirilemez (mutable) olan karakter dizilerinin aksine, listelerin her bir elemanı de ˘gi¸stirilebilir:

 

 

>>> a

[’salam’, ’zeytin’, 100, 1234]

>>> a[2] = a[2] + 23

>>> a

[’salam’, ’zeytin’, 123, 1234]

 

Liste dilimlerine de atama yapılabilir ve bu listenin boyunu da de ˘gi¸stirilebilir.

>>> 

# Bazı elemanları de˘gi¸stir:

a[0:2] = [1, 12]

>>> a

[1, 12, 123, 1234]

>>> # Bazı elemanları sil:

a[0:2] = []

>>> a

[123, 1234]

>>> # Listenin içine elemanlar ekle:

a[1:1] = [’bletch’, ’xyzzy’]

>>> a

[123, ’qwerty’, ’xyzzy’, 1234]

>>> a[:0] = a # Listenin kopyasını listenin ba¸sına ekle

>>> a

[123, ’qwerty’, ’xyzzy’, 1234, 123, ’qwerty’, ’xyzzy’, 1234]

 

 

Yerle¸sik fonksiyon len() listeler ile de çalı¸sır:

 

 

 

 

 

 

 

 

Python İle Series 60 uygulanmaları geliştirmek

Thursday, April 26th, 2007

Python ile S60 Uygulamaları:

Yazılımı geliştirmek basit ve hızlıdır.Python programlarını Nokia S60 ‘da çalıştırmak için :
1. Python interpreter uygulamalarını çalıştırmak için bir *.sis dosyası ücretsiz olarak yüklenir.
2. Kendi python kodunuzu basit bir editörde yazın *.py uzantısı ile kaydedin.
3. Bluetooth ,USB kablosu,kızılötesinden kaydettiğiniz dosyanızı telefona kopyalayın ve basitçe çalıştırın.Derlemeye gerek kalmadan.”Python S60″ ile uygulama geliştirmeye başlamak için en ideal çözündür çünkü kolay ve hızlıdır.Tek bilmeniz gereken şey python programlamak .Uygulamalar yaratmaya çok kısa sürede başlıyacaksınız.

Python ile Series nedir?

Python Programlama dilini Series 60 ortamına taşımıştır.Bu ortam Symbian işletim sistemini yenilikler getirmiştir. Python ile Series 60 ortamı Python 2.2.2. çalışmaktadır.Birçok Python standart kütüphane modullerini içermektedir,ama mobil ortama özel modulleriyle zirveye çıkmıştır.Bunlar:

-Doğal Grafik kullanıcı arabirimileri ,
- Bluetooth
- GPRS ağ bağlantısı,
- GSM yer bilgileri,
- SMS,
- Kameraya erişim.

Python Series 60 Yetenekleri:

• Menu, Formlar, Listboxes, Input fields, Dialogs, Notes
• - color, font and style attributes, - direct-screen drawing, - displaying images and icons
• Key-down and key-up events
• TCP/IP, Bluetooth (RFCOMM, OBEX)
• SMS,MMS
• HTTP, FTP, …
• Acess to file system, file reading, XML, RSS
• Acess to camera with viewfinder, telephone
• Acess to calendar, contacts, sysinfo
• Location (cell-id)
• Content handler
• Python extensions can be written in C++ Nasıl python ile Series 60 uygulaması yazılır ve test edelim

 

 

Kod yazmak:

1.Bir text editörde

import appuifw

appuifw.note(u"This works", "info")

 Bu satırları yazalım ve test.py olarak kaydedelim.

2.1. Telefonda test edelim :

  • test.py dosyasını bluetooth veya PC suite ile telefona yükleyelim
  • Yüklenen dosya mesaj kutusuna gelir.Mesaj içine girildiğinde yükleme işlemi yapılır.
  • Python series 60  ortamını telefonda çalıştırıp ->”seçenekler(options)”  kısmında ->”run script (çalıştır)”->”your script” seçilir ve  ok basılır.

 

Introduction to Python

Thursday, March 29th, 2007

Süreç içinde önce Assembly, sonra C gibi dillerin ortaya çıkmasıyla program yazmak gitgide kolaylaştı. Bu sürecin günümüzde ulaştığı son nokta ise scripting dilleri. Her ne kadar ağır yük altında çalışacak programlar için hala C ve C++ gibi diller tercih edilse de özellikle günlük işler için yazılan programlarda pratikliği açısından scripting dilleri öne çıkıyor. Python’da ilk akla gelen dillerden biri.

Python ilk olarak 1990′ların başında Guido van Rossum tarafından ABC adlı bir dilin devamı olarak geliştirilmeye başlanmıştır. İlk olarak CWI bünyesinde geliştirilen Python daha sonra sırasıyla CNRI ve BeOpen Labs. bünyesinde geliştirilmiştir. Günümüzde ise geliştirilmesine Python Software Foundation tarafından devam edilmektedir. 1.6.1 sürümünden beri GPL uyumlu bir lisans olan Python Lisansı altında dağıtılmaktadır.

  • Python çalıştırmak

Python programlarını çalıştırabilmek için python yorumlayıcısına ihtiyacımız vardır. Genelde GNU/Linux ve BSD gibi özgür UNIX’ler ile hazır gelse de diğer işletim sistemleri için Python yorumlayıcısını http://www.python.org adresinden indirebilirsiniz. Yorumlayıcıyı çalıştırmak için UNIX sistemlerde komut satırında “python” yazmanız, Windows sistemlerde ise Başlat menüsünden “Python (command line)” seçeneğini seçmeniz yeterlidir. Bu interaktif olarak Python yorumlayıcısını kullanmanız için size bir komut satırı açacaktır. İlk açıldığında python komut satırı aşağı yukarı şöyle gözükür:

Python 2.3.2 (#2, Oct  6 2003, 08:02:06)
[GCC 3.3.2 20030908 (Debian prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

Yazının geri kalanında başında “>>>” karakterleri bulunan satırlar yorumlayıcıda interaktif olarak yazılan komutları ifade etmektedir.

  • Hello Python:

Python her ne kadar bir script dili olsa da diğer scripting dillerinde olan bazı özellikleri içermez. Herşeyden önce Python’da küçük-büyük harf ayrımı mevcuttur. Bu nedenle foobar, fooBar ve FooBar birbirinden farklı nesnelerdir. Python’un bir diğer farkı ise sayısal ve metin tipleri arasında otomatik çevirme yapmamasıdır. Son olarak Python’da değişkenler kullanılmadan önce mutlaka ilklendirilmelidir (initialization). Python yorumlayıcısı değişkenlere kullanıldığı yere göre otomatik bir değer atamayacaktır. İlklendirilmemiş bir değeri kullanmaya kalktığınızda bir NameError ile karşılaşısınız. Ancak buna rağmen değişkenlerin tiplerinin herhangi bir özel yerde tanımlanması gerekmez, örneğin onbir=11 yazdığımızda onbir adlı değişken otomatik olarak integer veri tipine sahip olacaktır.

Son olarak akılda bulundurulması gereken bir detay Python’da herşeyin bir nesne olduğudur. Bu nedenle mesela bir değişkene atamadan doğrudan kullanacağımız bir string de bir string değişkenle aynı özelliklere sahiptir.

Birçok programcının bu iki kelimeyi yanyana görmekten nefret ettiğini biliyorum ama bu konuda yazanlar için de nasıl zevkli olduğunu tahmin bile edemezsiniz. İşte Python’ca Hello Python!:

print "Hello Python!"

Tabiiki bu Python’un nasıl bir dil olduğu konusunda bir fikir vermiyor. Şu örnek biraz daha açıklayıcı olacaktır:

import os

if os.name == "posix":
   print "Hello UNIX!"
elif os.name in ["nt", "ce"]:
   from sys import stdout
   stdout.write("Hello Microsoft!n")
elif os.name == "mac":
   helloto = "Steve Jobs"
   print "Hello %s!"%helloto
else:
   print "Hoppala ?"