12: İpuçları

Bu derste Python dili ile geçen derslerde atladığımız bazı bilgileri ele alacağız.

print Seçenekleri

Şu ana kadar yazdırma fonksiyonu olarak print() ile bir satırda birkaç farklı item yazabileceğimizi, aralarına boşluk koyabileceğimizi gördük. Ama print fonksiyonunda bir kaç anahtar kelimeyi  argüman olarak kullanarak yazdrıma işlemini ihtiyaçlarınıza göre şekillendirebilirsiniz.

    • Boşluk karakteri yerine ayırıcı olarak, örneğin S, stringi koymak için argüman olarak sep = «S» kullanırız.
    • Satır sonu karakteri yerine başka bir, örneğin  S, stringi koymak için argüman olarak end = «S» kullanırız.

Bu yeni özelliği anahtar kelime argümanları, birkaç örnekte görelim.

Example
sep ve end örnekleri. Her bir print fonksiyonunun etkilerini inceleyin.

Anahtar kelime argümanları argüman listesnin en sonunda yer almalıdır, yoksa hata oluşur. Eğer ikisini birlikte kullanıyorsanız, sıra farketmez istediğinizi önce yazabilirsiniz.

Coding Exercise: Alfabe Aerobiği
Şimdi öğrendiğimiz yöntemi kullanarak, aşağıdaki programın hatalı kısmını düzeltin ve tüm büyük harfli alfabeyi aynı satırda yazdırsın.

Geçerli Değişken/Fonksiyon İsimleri

  • İsimler harfler, sayılar ve altçizgiden (_) oluşabilir.
  • İsimlerin ilk karakterleri harf olmalıdır.
  • Python büyük harf küçük harf ayrımı yapar.

Yani benim_3üncü_sayım geçerli bir değişken adı iken 3üncü_sayı değildir.

Example
Büyük ve küçük harflerin farklı agılandığına dair bir örnek.

Azalanfor Döngüleri & Diğer Artışlar

Artan sıralı sayılar boyunca for döngüsünün nasıl yinelemeye devam ettiğini anlatmıştık:

Example
Bir for döngüsü

Çoğu zaman for döngüsünü azalan sıralı sayılarla yazmak gerekir (büyükten küçüğe). Bunu yapabilmek için range ile bir argüman daha kullanırız; step:

Example
rangeiçin negatif adım aralığı

Bir an dikkat ederseniz, aslında range(0, 5) ile range(0, 5, 1) formülünün aynı şey olduğunu görürsünüz: artış birer birer gerçekleşir, her seferinde 1 artarak ilerler. Herhâlukârda dikkat etmemiz gereken şey range(start, stop, step) en son noktadan yani  stop noktasından  bir önce yineleme durur. Daha fazla bilgiyi For more information you can see the Python elkitabında. bulabilirsiniz.

Coding Exercise: Şanslı yediler
Adım aralığı 10 olacak şekilde ve birler basamağı 7 olan tüm çift haneli sayıları artan sırayla yazdıran bir programı  for döngüsü kullanarak oluşturun.

Benzer şekilde string[x:y:2] kullanarak substringi x, x+2, x+4, ... karakterleri ile veya  string[y:x:-1] ile substringi tersten yazılmış olarak alabiliriz (y > x ise).

Bir for döngüsü ile azalan sırada range almak için reversed(range(x, y)), kullanırız, böylece işlem  y-1 'den başlayarak x'e doğru azalan sırada gider.

Daha Küçük Kod Yazmak

Python bize daha kısa kod yazma imkânları da verir, burada birkaç tanesini göreceğiz.

Bu web sayfasında biz bu özellikleri her zaman kullanmıyoruz, çünkü bunlar bazen kodu okumayı zorlaştırıyor.

Atama Operatörleri

Python "x += 1" yazmamıza izin verir ve anlamı "x sayısına 1 ekle"  olur. Aşağıda göreceğimiz gibi bu yazım ile  "x = x + 1" aynı anlama gelir:

Example
 +=, -=, *=, /=örnekleri

Benzer olarak, sayılarla işlem yaparen (//=) bölme, modulus (%=), ve kuvvet (**=) işlemcilerini kullanabiliriz.

Satır İçi Bloklar

Daha önce bazı ifadelerin ilk satırlarını takiben kodu girintilenmiş blokla yazmamız gerektiğini  görmüştük: for, if, else, elif, while, vedef, örneğin:

if x==y:
  «blok» #girinti yaptık, birkaç satır olabilir
Özel bir durum olarak «blok» sadece 1 satır uzunluğunda ise, Python şu sentaksa izin verir:

if x==y: «blok» #tek satır
Bir örnek yapalım:

Example
Satır içi blok ifadeleri

Bunun da sınırları var ama: iki nokta üstüste ile birleştirilmiş blok (if, for, vb) satır içi blok olarak kullanılamaz. Mesela, if 2>1: if 4>3: print() sentaks hatası verir.

Çoklu Atamalar

Python  tek ifadeyle iki atama yapmaya izin verir:

Example
Çoklu atama

Bu kullanım sayesinde yer değiştirme alıştırmasında tek satırla soruyu çözebiliriz!

Karşılaştırma Zinciri

Python birden fazla karşılaştırmayı birleştirmeye de izin verir:

Example
Çoklu atama
 v'lerin değer  c'lerin karşılaştırma olduğu herhangi bir v1 c1 v2 c2 v3 ... zinciri, (v1 c1 v2) ve (v2 c2 v3) ve... ile aynı şekilde işleme konur.

[:] ve range() için Varsayılan Değerler

Substring operatörünü [:] kullanırken başlangıç veya bitiş değerlerinden birini yazmayabiliriz. (Gelecek derste göreceğiniz gibi, bu listeler için de geçerlidir.) Stringin varsayılan ilk indeksi  0 (stringin başlangıcı) ve varsayılan son indeks de stringin uzunluğudur (karakter sayısıdır).  Aynı şekilde, range(n) de range(0, n) yapısının kısaltılmışıdır.

Example
[:] ve range() için varsayılan değerlerin kullanımı

None

Bazı fonksiyonların asıl etkisi bir değer döndürmektir, abs(x) gibi. Ama etkileri itibariyle daha değerli diğer fonksiyonlar, print() gibi, yine de varsayılan None değerini döndürebilirler:

Example
 print değeri

Burada None  Python tarafından genel amaçlı bir yer tutucu (placeholder) olarak kullanılan özel bir değerdir. Eğer type(None) komutunu verirseniz, göreceksiniz ki  None için bile bir tip tanımlı, NoneType. Buraya kadar gelmişken bir type değişkeninin tipine bakalım:

Example
Bir tipin tipi

Şimdiki alıştırmada type ve print kullanılarak yazılmış uzun bir komutun sonuçlarını dikkatle izlemenizi isteyeceğiz.

Scramble Exercise: Bir Varmış
print(type(print(type(type(print(print()))))))  komutunun çıktısı 4 satırdan oluşur. Bunları doğru şekilde sıralayalım.
  • <class 'type'>
  • <class 'NoneType'>
  • «blank line»
  • None
Correct!

Şimdilik ipuçlarımız bu kadar. Bir sonraki derse geçmeye hazırız!