Geçen haftanın ilerisi

Geçen hafta, Ödev 1 ve float

Ders programı

Ders programı: Ders 1 bitti, bugün Ders 2 Beş sütunlu ders programı, soldan sağa. Sağ üstte Salı, 18.00, E4. Ders 1, 20 Ekim (üstünde petrol mavisiyle bitti yazıyor, başlığı gri): bilgisayar, print(), error messages, int (turuncu), float (hardal sarısı), variable; Ödev 1, 25 Ekim Pazar 23.59. Ders 2, 27 Ekim (üstünde bugün yazıyor, açık mavi ve çivit mavisi çerçeveyle vurgulu): str (yeşil), input(), f-string, index, slicing, bool (deniz yeşili), if / elif; Ödev 2, 1 Kasım Pazar 23.59. Ders 3, 3 Kasım: while, for, break, continue, try / except, assert; Ödev 3, 8 Kasım Pazar 23.59. Ders 4, 10 Kasım: import, def, return, scope, None (bej), class; Ödev 4, 15 Kasım Pazar 23.59. Ders 5, 17 Kasım: list (vişneçürüğü), tuple (mavi gri), aliasing, dict (kahverengi), set (zeytin yeşili), file; Ödev 5, 22 Kasım Pazar 23.59. Alt satır: Her Ödev, dersten sonraki Pazar 23.59'a kadar teslim edilir. Salı, 18.00, E4 bitti Ders 1 20 Ekim bilgisayar print() error messages int float variable Ödev 1 25 Ekim Pazar 23.59 bugün Ders 2 27 Ekim str input() f-string index, slicing bool if / elif Ödev 2 1 Kasım Pazar 23.59 Ders 3 3 Kasım while for break continue try / except assert Ödev 3 8 Kasım Pazar 23.59 Ders 4 10 Kasım import def return scope None class Ödev 4 15 Kasım Pazar 23.59 Ders 5 17 Kasım list tuple aliasing dict set file Ödev 5 22 Kasım Pazar 23.59 Her Ödev, dersten sonraki Pazar 23.59'a kadar teslim edilir.

Geçen hafta

Geçen hafta: Ders 1'in özeti Ders 1'in tek sayfalık özeti, Ders 1'deki sırayla beş kutu. Üst sıra solda print() ve comment: kod panelinde gri # total credits satırı, yanında Python okumaz; altında print("AGNO:", 2.94) satırı ("AGNO:" str, yeşil; 2.94 float, hardal sarısı); Çıktı panelinde yalnızca AGNO: 2.94. Üst sıra sağda Error messages: print("Selam" satırında kapanmayan parantez kırmızı işaretli, yanında çalışmadan önce bulunur, altında kırmızıyla SyntaxError: '(' was never closed; prnt("Selam") satırında prnt kırmızı işaretli, yanında satırı çalışınca bulunur, altında kırmızıyla NameError: name 'prnt' is not defined. Alt sıra solda Value ve type: 7 (int, turuncu) ve 2.94 (float, hardal sarısı) kutuları, altlarında int ve float etiketleri; print(type(2.94)) satırından bir okla <class 'float'>. Ortada Arithmetic operators, her biri bir okla sonucuna: 7 + 2 sonuç 9, 7 - 2 sonuç 5, 7 * 2 sonuç 14, 7 / 2 sonuç 3.5; ikinci sütunda 7 // 2 sonuç 3, 7 % 2 sonuç 1, 2 ** 3 sonuç 8. 3.5 float, hardal sarısı; öteki sonuçlar int, turuncu. Sağda Variable: x = 5 satırı; lacivert x isim etiketinden 5 (int, turuncu) kutusuna bir ok, okun üstünde gösterir. print() ve comment # total credits print("AGNO:", 2.94) Python okumaz Çıktı AGNO: 2.94 Error messages print ( "Selam" çalışmadan önce bulunur SyntaxError: '(' was never closed prnt ( "Selam" ) satırı çalışınca bulunur NameError: name 'prnt' is not defined Value ve type 7 int 2.94 float print(type(2.94)) <class 'float'> Arithmetic operators 7 + 2 9 7 - 2 5 7 * 2 14 7 / 2 3.5 7 // 2 3 7 % 2 1 2 ** 3 8 Variable x = 5 x gösterir 5 int

Ödev 1 ve beklenen çıktı

Çıktınızdaki satırToplam kredi: 9 ile
Toplam kredi: 9aynı
Toplam kredi 9farklı: iki nokta yok
Toplam kredi : 9farklı: iki noktadan önce boşluk var
toplam kredi: 9farklı: küçük t

Çıktı, beklenen çıktıyla karakter karakter aynı olmalı.

kontrol.py

Run penceresi
✗ 1. Not kartı
    4. satır beklenen: 'Toplam kredi: 9', sizinki: 'Toplam kredi 9'
✓ 2. Hatalı satırlar
✓ 3. Bir milyon saniye
✓ 4. AGNO'ya bir ders eklemek
✓ 5. Dört tane 4

4 / 5 görev geçti.

Ödevi göndermeden önce kontrol.py'yi bir kez çalıştırın; Ödev 2'de de var.

Python ne yazdırır?


credits = 3
points = credits * 3.0
print(points, points / credits)
      
  1. 9 3
  2. 9.0 3
  3. 9.0 3.0
  4. 9 3.0

int ve float

int ve float: sorular ve cevapları Üstte soru: Öğrenci sayısı, boy, AGNO: hangisi int, hangisi float? Altında iki başlık: solda turuncu zeminde int, kaç tane?; sağda hardal sarısı zeminde float, ne kadar?. Bir tıklamayla cevaplar çıkar: int altında öğrenci sayısı ve 27 (turuncu), float altında boy 1.75 ve AGNO 2.94 (hardal sarısı). Altta ince bir çizgiden sonra soru satırları: solda print(type(7)), print(type(7.0)); bir tıklamayla yanlarında <class 'int'>, <class 'float'> çıkar. Sağda print(type(10 // 2)) ve print(type(10 / 2)); bir tıklamayla daha <class 'int'> ve <class 'float'> çıkar. Öğrenci sayısı, boy, AGNO: hangisi int, hangisi float? int kaç tane? float ne kadar? öğrenci sayısı 27 boy 1.75 AGNO 2.94 print(type(7)) print(type(7.0)) print(type(10 // 2)) print(type(10 / 2)) <class 'int'> <class 'float'> <class 'int'> <class 'float'>
Sayarken int, ölçerken float.

Kasada 5.9392092 TL

Kasada 5.9392092 TL Elle çizilmiş gibi basit bir resim. Sağda bir market kasası var; kasanın ekranında hardal sarısı zemin üstünde 5.9392092 TL yazıyor. Solda bir öğrenci elini açmış, avucunda üç bozuk para var ve ekrana bakıyor. Bir tıklamayla öğrencinin konuşma balonu çıkıyor: Hayır, en küçük para 1 kuruş. En yakını 5.94 TL. 5.9392092 TL Hayır, en küçük para1 kuruş. En yakını5.94 TL.

Cebinizdeki paralarla 5.9392092 TL'yi tam ödeyebilir misiniz?

Bilgisayarın bozuk paraları

Cüzdanın paraları ve bilgisayarın paraları Elle çizilmiş gibi basit bir resim, üç bölme. Birinci bölme, Cüzdanınız: 5 TL, 10 TL ve 20 TL yazan üç banknot, altında 1 TL, 50, 25, 10 ve 5 yazan, gittikçe küçülen beş bozuk para; en altta arada para yok yazıyor. İkinci bölme bir tıklamayla çıkıyor, Bilgisayar: yanan bir ampulün yanında 1 ve voltaj var, sönük bir ampulün yanında 0 ve voltaj yok yazıyor. Üçüncü bölme bir tıklamayla daha çıkıyor, Kesir için: gittikçe küçülen dört hardal sarısı para, üstlerinde 1/2, 1/4, 1/8 ve 1/16 yazıyor, sonda üç nokta; altında hep yarıya bölünür yazıyor. Cüzdanınız 5 TL 10 TL 20 TL 1 TL 50 25 10 5 arada para yok Bilgisayar 1 voltaj var 0 voltaj yok Kesir için 1/2 1/4 1/8 1/16 … hep yarıya bölünür
Bilgisayarda yalnızca 1 ve 0 var; kesir için paraları yarım, çeyrek, sekizde bir…

0.75 ve 0.1

0.75 ve 0.1 bilgisayarın paralarıyla, satır satır Üç sütunlu tablo: Para, 0.75, 0.1. Başta yalnızca başlık ve para satırları görünür: yarım (0.5), çeyrek (0.25), sekizde bir (0.125), on altıda bir (0.0625), otuz ikide bir (0.03125). Tıklamalarla 0.75 sütunu dolar: yarım için al, kalan 0.25; çeyrek için al, kalan 0. Sonra 0.1 sütunu satır satır: yarım, çeyrek ve sekizde bir için fazla, alma; on altıda bir için al, kalan 0.0375; otuz ikide bir için al, kalan 0.00625 ve üç nokta. Al hücreleri petrol mavisi, fazla hücreleri gri. En son binary (ikilik taban) satırı çıkar, altında alınan 1, alınmayan 0: 0.75 için 0.11, 0.1 için 0.0001100110011 ve üç nokta. Para 0.75 0.1 yarım (0.5) çeyrek (0.25) sekizde bir (0.125) on altıda bir (0.0625) otuz ikide bir (0.03125) al, kalan 0.25 al, kalan 0 fazla, alma fazla, alma fazla, alma al, kalan 0.0375 al, kalan 0.00625, … binary (ikilik taban) alınan 1, alınmayan 0 0.11 0.0001100110011…
0.75 tam ödenir; 0.1 hiç bitmez.

0.1 + 0.2


print(0.1 + 0.2)
print(round(0.1 + 0.2, 2))
Çıktı
0.30000000000000004
0.3
Genel biçim
round(<sayı>, <noktadan sonra kaç basamak>)

Python'un hatası değil: paralar yarıya bölünerek gidiyor. round() yuvarlar.

Parayı kuruşla tutmak


total_tl = 0.10 + 0.20
total_kurus = 10 + 20
print(total_tl, total_kurus)
Çıktı
0.30000000000000004 30

Parayı kuruş olarak int tutun: int'ler tam tutulur.

Ders 2'nin hedefi

2A: metinle çalışmak2B: programa karar verdirmek
strcomparison: ==, <, >=
input(), type conversion: int(), float()bool: True, False
f-string: f"{gpa:.2f}"and, or, not
string methods: strip(), upper()if ve else
index, len(), slicingelif

Bu hafta bu iki şeyi öğreneceksiniz.

Aklınızda kalsın: klavyeden gelen her şey str'dir.

Ders 2'nin hedef programı

Hedef programın parçaları Solda PyCharm Run penceresi, beş satır: Ders kodu: mat123 / Kredi: 4 / Puan (0-100): 66 / MAT123: 66 puan, katsayı 2.50, geçti / 4 x 2.50 = 10.00; kullanıcının yazdığı kısımlar petrol mavisi. Sağda yukarıdan aşağı etiketler, her biri düz bir çizgiyle çıktıdaki yerine bağlı. Bu yarının etiketleri çivit mavisi düz çerçeveli: 3. input() ilk satırdaki Ders kodu: sorusuna, 4. int() Kredi: 4 satırına, 6. strip(), upper() MAT123'ün üstündeki ayraca, 5. f-string, :.2f son satırdaki 10.00'ın altındaki ayraca. Aradan sonraki etiketler gri kesik çerçeveli: 11. elif katsayı 2.50'nin üstündeki ayraca, 10. if ve else geçti kelimesinin altındaki ayraca. En altta örnek: düz çerçeve 2A, kesik çerçeve 2B. Run penceresi Ders kodu: mat123 Kredi: 4 Puan (0-100): 66 MAT123: 66 puan, katsayı 2.50, geçti 4 x 2.50 = 10.00 3. input() 4. int() 6. strip(), upper() 11. elif 10. if ve else 5. f-string, :.2f 2A 2B
Bugünkü konular bu programda birleşir.

2A konuları

  1. 1. Reassignment ve dynamically typedx = 5, x = x + 1, b = a
  2. 2. str"MAT101", ASCII, "ab" * 3, TypeError
  3. 3. input()Run penceresi, her zaman str
  4. 4. Type conversionint(), float(), str(), round()
  5. 5. f-stringf"...{...}", :.2f
  6. 6. String methods ve immutable strstrip(), upper(), replace()
  7. 7. Index, len() ve slicingcode[0], len(), code[0:3]

1. Reassignment ve dynamically typed

İsmin gösterdiği value değişir

x = 5

x = 5: okunuşu ve memory resmi, adım adım Solda kod paneli: x = 5 (5 turuncu, int). Sağda iki boş sütun: İsimler ve Value'lar. Bir tıklamayla solda Okunuşu tablosu çıkar: Matematikte satırı x eşittir 5; açık mavi vurgulu Python'da satırı x'e 5'i ata. Bir tıklamayla daha sağdaki resim çıkar: İsimler sütununda lacivert x etiketi, Value'lar sütununda 5 (int, turuncu); x'ten 5'e açık mavi şeritli bir ok, yani x artık 5'i gösterir. x = 5 İsimler Value'lar Okunuşu Matematikte x eşittir 5 Python'da x'e 5'i ata x 5 int
x = 5 bir assignment'tır: x artık 5'i gösterir.

x = 2 + 3

x = 2 + 3: önce sağ taraf, sonra isim, adım adım Solda kod paneli: x = 2 + 3 (2 ve 3 turuncu, int). Sağda iki boş sütun: İsimler ve Value'lar. Birinci tıklama: 2 + 3'ün altında 1 numaralı ayraç ve 'önce' satırı: 2 + 3 hesaplanır, 5 çıkar; Value'lar sütununda 2 + 3 yazısından inen bir ok ve açık mavi bantlı yeni value 5 (int, turuncu). İkinci tıklama: x'in altında 2 numaralı ayraç ve satırı: x, 5'i gösterir; İsimler sütununda lacivert x etiketi ve x'ten 5'e açık mavi şeritli ok. x = 2 + 3 İsimler Value'lar 1 1 2 + 3 hesaplanır, 5 çıkar 2 + 3 5 int 2 2 x, 5'i gösterir x
Önce sağ taraf hesaplanır, sonra x sonucu gösterir.

Reassignment

Assignment ve reassignment yan yana, adım adım Sol yarı Assignment: kod x = 5; lacivert x etiketi 5'i (int, turuncu) bir okla gösterir. Sağ yarı Reassignment: başta aynısı, kod x = 5 ve x 5'i gösterir. Birinci tıklama: kodun ikinci satırı x = 10 ve açık mavi bantlı yeni value 10 (int, turuncu), 5'in altında. İkinci tıklama: x'ten 10'a açık mavi şeritli yeni ok; x'ten 5'e giden eski okun üstünde bir çarpı. 5 yerinde kalır. Assignment x = 5 x 5 int Reassignment x = 5 x 5 int x = 10 10 int
Aynı isme yeni bir value atamak, oku yeni value'ya taşır.

Reassignment ve kaptanlık bandı

Reassignment, bandın başka oyuncuya geçmesi Elle çizilmiş gibi basit bir resim: sahada turuncu formalı iki oyuncu. Soldakinin formasında 5, sağdakinin formasında 10 yazıyor. Soldakinin kolunda bandın eski yeri kesik çizgiyle gösterilmiş; lacivert bant x şimdi sağdaki oyuncunun kolunda. Kavisli bir ok bandın soldan sağa geçtiğini gösteriyor; okun üstünde x = 10 kodu var. Soldaki oyuncu gülümseyerek "Bant gitti, ben kaldım." diyor. 5 10 x x = 10 Bant gitti,ben kaldım.

Reassignment, bandın başka bir oyuncuya geçmesidir: ilk oyuncu sahada kalır, yalnızca bandı gider.


x = 5
x = 10

x = x + 1

x = x + 1: önce sağ taraf, sonra isim, adım adım Solda kod paneli: x = 5 ve x = x + 1 (sayılar turuncu, int). Sağda İsimler ve Value'lar sütunları; başta lacivert x etiketi 5'i (int, turuncu) bir okla gösterir. Birinci tıklama: ikinci satırda x + 1'in altında 1 numaralı ayraç ve satırı: x + 1 hesaplanır, 6 çıkar; Value'lar sütununda 5 + 1 yazısından inen bir ok ve açık mavi bantlı yeni value 6 (int, turuncu), 5'in sağ altında. İkinci tıklama: soldaki x'in altında 2 numaralı ayraç ve satırı: x, 6'yı gösterir; x'ten 6'ya açık mavi şeritli yeni ok, 5'e giden eski okun üstünde bir çarpı. 5 yerinde kalır. x = 5 x = x + 1 İsimler Value'lar x 5 int 1 1 x + 1 hesaplanır, 6 çıkar 5 + 1 6 int 2 2 x, 6'yı gösterir
Sağ taraf x'in eski value'sunu okur; sonra ok yeni value'ya taşınır.

Matematikte x = x + 1'in çözümü yoktur.

rest = rest % 3600


# a day is 86400 seconds
rest = 1000000 % 86400
print(rest)
# an hour is 3600 seconds
rest = rest % 3600
print(rest)
Çıktı
49600
2800

Bazılarınız bugünün ilk konusunu ödevde zaten yaptı: aynı isme yeni bir value.

Reassignment adım adım

b = a, b'yi aynı value'ya bağlar; a taşınınca b yerinde kalır.

Dynamically typed (dinamik tipli)

Dynamically typed: type value'dadır, isimde değil Solda lacivert x isim etiketi; altındaki type yuvası boş ve üstü çizili, altında isimde type yok yazıyor. x'ten 7 değerine (int, turuncu) giden eski ok gri ve kesikli; 7'nin altındaki yuvada int yazıyor. x'ten "yedi" değerine (str, yeşil) giden yeni ok, çivit mavisi çerçeveli açık mavi şeridin üzerinde; "yedi"nin altındaki yuvada str yazıyor. Sağda çıktı paneli: <class 'int'> ve <class 'str'>. Özet: x önce 7'yi (int, turuncu), sonra "yedi"yi (str, yeşil) gösterir; type'lar value'ların altında, ismin altında type yok. isimde type yok x 7 int "yedi" str x = 7 x = "yedi" Çıktı <class 'int'> <class 'str'>
Type value'dadır, isimde değil; bu yüzden Python dynamically typed bir dildir.

2. str

Metin değerleri, tırnaklar, + ve *

str

str: karakterlerin sırası data-focus chars durumu: solda "MAT101" (str, yeşil), bir okla yan yana altı yeşil kutuya ayrılıyor: M, A, T, 1, 0, 1; kutuların üstünde bir ayraç ve karakterler sırayla yazısı, altında type etiketi str. Altı kutu açık mavi, çivit mavisi çerçeveli bir bandın içinde. Sağda iki kod satırı, print("MAT101") ve print(type("MAT101")), altında Çıktı paneli: MAT101 ve <class 'str'>. data-focus small durumu: altta iki satır daha görünür; "A" (str, yeşil) tek bir yeşil kutuya, A harfine gider, yanında str; "" (str, yeşil) kesik çizgili boş bir yeşil kutuya gider, yanında boş str. Bu iki kutu açık mavi, çivit mavisi çerçeveli bandın içinde; üst satır gri ve soluk. karakterler sırayla "MAT101" M A T 1 0 1 str print("MAT101") print(type("MAT101")) Çıktı MAT101 <class 'str'> "A" A str "" boş str
str, tırnak içine yazılmış metindir: karakterlerin sırası.

Programdaki metinler

Programdaki metinler str'dir Üç sütun. Ad: "Mehmet" (str, yeşil), klavyeden gelir. Ders kodu: "MAT123" (str, yeşil), transkriptten gelir. Mesaj: "AGNO: " (str, yeşil), programın kendisinden gelir. Mehmet, MAT123 ve AGNO: değerleri; üçü de str, yeşil. Altta ince bir çizgiden sonra soru: Öğrenci numaranız rakamlardan oluşuyor: int mi, str mi? Bir tıklamayla cevap çıkar: yeşil kutuda "12345678", str, hesap yapılmaz. ad "Mehmet" str klavyeden ders kodu "MAT123" str transkriptten mesaj "AGNO: " str programın kendisinden Öğrenci numaranız rakamlardan oluşuyor: int mi, str mi? "12345678" str hesap yapılmaz
Ad, ders kodu, ekrandaki mesaj: programdaki her metin bir str'dir.

Tırnak içinde tırnak


print("Ankara'da")
print('"Merhaba" dedi')
Çıktı
Ankara'da
"Merhaba" dedi
Tırnaklar sınırdır; içerideki tırnak değerin parçasıdır Üstte "Ankara'da" yazısı. Dıştaki iki çift tırnak gri; ikisinden üstteki sınır yazısına birer çizgi çıkar: tırnaklar str'nin nerede başlayıp bittiğini gösterir. İçerideki harfler ve kesme işareti yeşil, yani str'nin parçası (str, yeşil); kesme işareti açık mavi, çivit mavisi çerçeveli bir bantta, altında değerin içinde yazısı. Altta '"Merhaba" dedi' yazısı: dıştaki iki tek tırnak gri, alttaki sınır yazısına bağlı; içerideki çift tırnaklar ve metin yeşil, str'nin parçası. sınır " Ankara ' da " değerin içinde '"Merhaba" dedi' sınır

Tırnaklar değerin parçası değildir; içeride öbür tırnak durabilir.

Escape character (kaçış karakteri)


print("Hoca \"Merhaba\" dedi")
Çıktı
Hoca "Merhaba" dedi

Ters bölü (\) sonraki karakterin anlamını değiştirir: \" metni bitirmez, metnin içinde bir tırnak olur.

\n ve \t


print("Hacettepe\nÜniversitesi")
print("1\tAli")
Çıktı
Hacettepe
Üniversitesi
1	Ali

\n satır sonudur, \t bir tab boşluğudur.

print() ve satır sonu


print("Hacettepe")
print()
print("Üniversitesi")
Çıktı
Hacettepe

Üniversitesi

print() yazdığının sonuna kendisi bir \n ekler; boş print() yalnızca o \n'yi yazar.

Karakterler ve sayılar

Karakterler ve sayılar: 65 ile "A" belleğe nasıl gider Üstte soru: Bilgisayarda yalnızca 1 ve 0 var: "A" nasıl saklanır? Sağda uzun bir çivit mavisi blok: bellek, yalnızca 1 ve 0. Üst satır, sayı: 65 (int, turuncu) bir okla doğrudan belleğe gider. Alt satır, karakter: "A" (str, yeşil) başta tek başına durur, bellekle arası boştur. Bir tıklamayla arası dolar: "A" bir oka, açık mavi bantla vurgulanmış küçük bir tabloya gider, tabloda "A" ile 65 yan yana; oradan 65 (int, turuncu) ve belleğe. Son tıklamada altta büyük yazıyla kural: Her karaktere, anlaşılmış bir tablodan bir sayı verilir. Bilgisayarda yalnızca 1 ve 0 var: "A" nasıl saklanır? bellek yalnızca 1 ve 0 sayı 65 int doğrudan karakter "A" str tablo "A" 65 65 int Her karaktere, anlaşılmış bir tablodan bir sayı verilir.

ASCII

ASCII tablosundan bir parça, satır satır İki küçük tablo yan yana. Solda büyük harf: başta boş hücreler, tıklamalarla "A" 65, "B" 66, "C" 67. Sağda küçük harf: "a" 97, "b" 98, "c" 99. Harfler yeşil (str), sayılar turuncu (int). Son tıklamada sağda, tablonun dışında, gri kesik çizgili iki hücre: "ç" ve 231, üstünde ASCII'de yok, altında: Python'un str'si ç, ş, ğ'yi de tutar. büyük harf küçük harf "A" 65 "B" 66 "C" 67 "a" 97 "b" 98 "c" 99 ASCII'de yok "ç" 231 Python'un str'si ç, ş, ğ'yi de tutar.
ASCII, İngilizce harflere, rakamlara ve işaretlere sayı veren bir tablodur.

ord()

ord(): karakterden sayıya, adım adım Üstte Genel biçim: ord(<karakter>). Altında üç satır, her biri bir str kutusundan ord() etiketli okla bir int kutusuna gider. Başta yalnızca ilk satır: "A" (str, yeşil) 65 (int, turuncu). Bir tıklamayla ikinci satır: "a" 97, yanında küçük a başka bir karakter, başka bir sayı. Bir tıklamayla üçüncü satır: "B", okun ucunda gri kesik çizgili boş bir kutu ve yanında ord("B") ne verir? Son tıklamada kutuya 66 (int, turuncu) gelir, yanında: tabloda A'dan sonra B. Genel biçim ord(<karakter>) "A" str ord() 65 int "a" str ord() 97 int küçük a başka bir karakter, başka bir sayı "B" str ord() ord("B") ne verir? 66 int tabloda A'dan sonra B
ord(), bir karakterin tablodaki sayısını verir.

chr()

chr(): sayıdan karaktere, ord()'un tersi Üstte Genel biçim: chr(<sayı>). Ortada "A" (str, yeşil) ve 65 (int, turuncu); üstten "A"dan 65'e giden ok, üstünde ord(). Bir tıklamayla alttan 65'ten "A"ya dönen ok, altında açık mavi bantla vurgulanmış chr(). Son tıklamada altta iki kod satırı yan yana: print(ord("a")) 97 yazar, print(chr(97)) a yazar. Genel biçim chr(<sayı>) "A" 65 str int ord() chr() print(ord("a")) 97 print(chr(97)) a
chr() ters yöne gider: sayıdan karakteri verir.

ord() ve chr()

B'nin sayısına 1 eklenirse chr() hangi harfi verir?

char ve str

Tek karakter de str: "A" ve "MAT101" Üstte iki değer yan yana. Solda "A" bir oka ve tek bir yeşil hücreye (str) gider; hücre ve str etiketi açık mavi, çivit mavisi çerçeveli bantta; altında 1 karakter. Sağda "MAT101" altı yeşil hücreye gider: M, A, T, 1, 0, 1, yanında str, altında 6 karakter. İnce bir çizginin altında kod: print(type("A")) yanında <class 'str'>. Bir tıklamayla print(type(chr(65))) ve <class 'str'>, yanında chr() da str verir. Bir tıklamayla daha print(type("")) ve <class 'str'>, yanında boş str: hiç karakteri yok. "A" A str 1 karakter "MAT101" M A T 1 0 1 str 6 karakter print(type("A")) <class 'str'> print(type(chr(65))) <class 'str'> chr() da str verir print(type("")) <class 'str'> boş str: hiç karakteri yok
Python'da char yok: tek karakter de str'dir.

C, C++ ve Java'da tek karakterin type'ı char'dır.

Data types

value
  1. Numbers(sayılar)

    1. Integral

      • int7
      • bool2B
    2. Real

      • float3.5
  2. Sequences(diziler)

      • str"7"
      • rangeDers 3
      • tupleDers 5
      • listDers 5
  3. Set types(kümeler)

    • setDers 5
  4. Mappings

    • dictDers 5
  5. None

    • NoneTypeDers 4
bu derstedaha öncesonraki derslerde

+ ve str

+ işlemcisi ve str, satır satır Üç satırlık + ve str resmi, her tıklamada bir satır. Her satırda yeşil str kutuları, aralarında + işareti ve sağda sonucu gösteren bir ok; sonuç kutusunun altında type etiketi str ve print()'in yazdığı satır, tırnaksız. Başta 1. satır: "Hacettepe" + " " + "Üniversitesi" sonucu "Hacettepe Üniversitesi" (str, yeşil); ortadaki kutu tek bir boşluk tutar, boşluk ortasında çivit mavisi bir nokta olan küçük bir hücreyle gösterilir; sonuç açık mavi, çivit mavisi çerçeveli bir bantta; yazdırılan satır Hacettepe Üniversitesi. Birinci tıklama, 2. satır: "Hacettepe" + "Üniversitesi" sonucu "HacettepeÜniversitesi" (str, yeşil), yazdırılan satır HacettepeÜniversitesi; solunda: Boşluk kendiliğinden eklenmez. Bant bu satırın sonucuna geçer. İkinci tıklama, 3. satır: lacivert name ismi "Mehmet" (str, yeşil) değerini gösteriyor; ince bir çizginin sağında "Merhaba " (sondaki boşluk noktalı hücreyle) + name sonucu "Merhaba Mehmet" (str, yeşil); yazdırılan satır Merhaba Mehmet; solunda: + ile sabit metin ve bir variable tek mesajda birleşir. Bant bu satırın sonucuna geçer. "Hacettepe" + " " + "Üniversitesi" "Hacettepe Üniversitesi" str Hacettepe Üniversitesi "Hacettepe" + "Üniversitesi" "HacettepeÜniversitesi" str HacettepeÜniversitesi Boşluk kendiliğinden eklenmez. name "Mehmet" "Merhaba " + name "Merhaba Mehmet" str Merhaba Mehmet + ile sabit metin ve bir variable tek mesajda birleşir.
+ iki str'yi arka arkaya ekler.

* ve str

* işlemcisi ve str İki satır. Üstte "ab" (str, yeşil) * 3: ok, yan yana üç "ab" kopyasına gider, aralarında + işaretleri ve altlarında 3 kez yazan bir köşeli ayraç var; ikinci ok sonuca gider: "ababab" (str, yeşil), çivit mavisi çerçeveli açık mavi şeritte, altında str etiketi ve yazdırılan satır ababab. Altta "=" (str, yeşil) * 20: ok bir çıktı kutusuna gider, içinde yirmi tane = işareti, altında 20 karakter yazan bir köşeli ayraç. "ab" * 3 "ab" + "ab" + "ab" 3 kez "ababab" str ababab "=" * 20 ==================== 20 karakter
str * n, aynı str'yi n kez arka arkaya yazar.

* ve spiker

Spiker golü uzatır Elle çizilmiş gibi basit bir resim. Bir spiker kabininde, masanın arkasında bir çöp adam elinde büyük bir mikrofonla bağırıyor, öbür kolu havada. Arkasında topun girdiği bir kale ağı var. Üstteki uzun konuşma balonunda Gooooooooool yazıyor; balonun üstündeki bir küme parantezi on o harfini topluyor ve "o" * 10 etiketini gösteriyor. En altta print("G" + "o" * 10 + "l") kodu var. "o" * 10 Gooooooooool print("G" + "o" * 10 + "l")

Spiker golü uzatır: "G" + "o" * 10 + "l".

Önce "o" * 10, sonra +: sayılardaki gibi * önce yapılır.


print("G" + "o" * 10 + "l")
Çıktı
Gooooooooool

+ ve * işlemcileri ve type

Operator aileleri Kursta görülecek dört operator ailesi, dört sütun. Arithmetic, 7 operator: + - * / // % **; bu derste başlığı açık mavi ve çivit mavisi çerçeveyle vurgulu. Comparison, 6 operator: == != < > <= >=. Logical, 3 operator: and or not. Membership, 1 operator: in. Bu üç ailenin hücreleri gri kesikli, yazıları gri, başlıklarının sağında hangi derste görüleceği yazıyor: Ders 1'de Ders 2, Ders 2'de 2B. + ve * hücrelerinde Ders 2A için boş bir ikinci satır yeri var (str ile). + str ile - * str ile / // % ** Arithmetic 7 Ders 22B == != < > <= >= Comparison 6 Ders 22B and or not Logical 3 Ders 22B in Membership 1 Ders 22B
Aynı işaret, iki yanındaki value'ların type'ına göre başka bir iş yapar.

str ve TypeError


print("A" - "B")

str'den str çıkarılamaz.

Şimdilik str ile yalnızca + ve * kullanıyoruz.

Önce hangi satır okunur?

Çıktı
Traceback (most recent call last):  File "…/python-kurs/example.py", line 1, in <module>    print("A" - "B")          ~~~~^~~~~2TypeError: unsupported operand type(s) for -: 'str' and 'str'1

TypeError

TypeError, satır satır okunuşu Üstte gri bir kod panelinde print("Hacettepe" + 1); "Hacettepe" yeşil (str), 1 turuncu (int). Altında Çıktı panelinde traceback'in beş satırı aynen: Traceback (most recent call last):, File "…/python-kurs/example.py", line 1, in <module>, print("Hacettepe" + 1), altında + işaretinin tam altında bir şapka ve iki işlenenin altında dalgalı çizgiler, en altta kırmızı: TypeError: can only concatenate str (not "int") to str. Birinci tıklama: son satırda 1 numaralı işaret, önce son satır. İkinci tıklama: şapkalı satırda 2 numaralı işaret, hata + işlemcisinde. Üçüncü tıklama: altta "Hacettepe" (str, yeşil) ve 1 (int, turuncu) arasında, + işaretinin üstünde kırmızı çarpı. Sağda: Bir yanda str, öbür yanda int. print("Hacettepe" + 1) Çıktı Traceback (most recent call last): File "…/python-kurs/example.py", line 1, in <module> print("Hacettepe" + 1) ~~~~~~~~~~~~^~~ TypeError: can only concatenate str (not "int") to str 1 önce son satır 2 hata + işlemcisinde "Hacettepe" str + 1 int Bir yanda str, öbür yanda int.
Python metin ile sayıyı kendiliğinden birleştirmez.

3. input()

Programa klavyeden değer vermek

input()

input() klavyeden değer alır Soldan sağa: klavye bloğunda m, i, l, l, e, t tuşları ve altında Enter tuşu. Klavyeden bir ok input("Kime selam? ") yazan kutuya gider. Oradan Enter'dan sonra yazan bir ok "millet" değerine gider: millet (str, yeşil), çivit mavisi çerçeveli açık mavi şeritte, altında str etiketi. En sağda lacivert name ismi, ondan "millet" değerine bir ok. Altta Run penceresi: Kime selam? satırında yazılan millet petrol mavisi. Özet: klavyeden millet yazılıyor; input() "millet" değerini (str, yeşil) veriyor; name ismi ona ok ile bağlı. klavye m i l l e t Enter input("Kime selam? ") Enter'dan sonra "millet" str name Run penceresi Kime selam? millet
input() soruyu yazar, Enter'ı bekler, yazılanı str olarak verir.

input() ve çaycı

input() çaycı gibidir Elle çizilmiş gibi basit bir resim. Üstte teas = input("Kaç çay? ") kodu var. Solda bir öğrenci masada oturmuş telefonuna bakıyor; masada boş bir çay bardağı var. Sağda beyaz gömlekli çaycı bir elinde bloknot, öbür elinde kalemle ayakta duruyor; konuşma balonunda "Kaç çay?" yazıyor. Bloknotun yeşil sayfasında tırnaklarıyla birlikte "3" yazıyor: cevap bir yazı olarak not edilmiş. teas = input("Kaç çay? ") "3" Kaç çay?

input() çaycı gibidir: sorar, cevabı bekler, duyduğunu yazı olarak not alır.


teas = input("Kaç çay? ")
print(type(teas), teas * 2)
Çıktı
Kaç çay? 3
<class 'str'> 33

input() adım adım

Önce biriniz adını söylesin; input() da sorar, bekler, cevabı alır. Program aynı, değer her çalıştırmada başka.

Run penceresinde girdi

PyCharm ekran görüntüsü, Run penceresinde girdi

Cevap, Run penceresine tıklanıp yazılır ve Enter ile gider; Stop programı durdurur.

input() ve type


value = input("Sayı: ")
print(type(value))
Çıktı
Sayı: 5
<class 'str'>
input() her zaman str verir Soldan sağa: 5 tuşundan bir ok input("Sayı: ") yazan kutuya, oradan bir ok "5" değerine gider: 5 (str, yeşil), çivit mavisi çerçeveli açık mavi şeritte, altında str etiketi. Sağında lacivert value ismi, ondan "5" değerine bir ok. Daha sağda ve biraz aşağıda 5 (int, turuncu), altında int etiketi, üstü iki kırmızı çizgiyle çarpı biçiminde çizilmiş; yanında kırmızı: bu değil. Altta Run penceresi: Sayı: satırında yazılan 5 petrol mavisi, sonraki satır <class 'str'>. Özet: 5 (str, yeşil); yanında üstü kırmızıyla çizilmiş 5 (int, turuncu). 5 input("Sayı: ") "5" str value 5 int bu değil Run penceresi Sayı: 5 <class 'str'>
Rakam yazılsa da: klavyeden gelen her şey str'dir.

input() ve TypeError


age = input("Yaş: ")
print(age + 1)
Çıktı
Yaş: 19Traceback (most recent call last):  File "…/python-kurs/example.py", line 2, in <module>2    print(age + 1)          ~~~~^~~TypeError: can only concatenate str (not "int") to str1

Yazılan 19 bir str; 1 ile toplanamaz.

Python ne yazdırır?


value = input("Sayı: ")  # user types 5
print(value + value)
print(type(value))
      
  1. 55 <class 'str'>
  2. 10 <class 'int'>
  3. 5 5 <class 'str'>
  4. TypeError

4. Type conversion

Bir type'tan öbürüne geçmek

Type conversion (tip çevirimi)

Type conversion: üç kutu Type conversion (tip çevirimi) için yan yana üç kutu, her biri çivit mavisi çerçeveli ve numaralı. 1 Otomatik: 3 (int, turuncu) artı 4.0 (float, hardal sarısı), aşağı bir okla 7.0 (float, hardal sarısı). 2 Açıkça: int("4") okla 4 (int, turuncu); float("3.25") okla 3.25 (float, hardal sarısı); str(4) okla "4" (str, yeşil). 3 Çevrilemeyen: int("abc") kırmızı bir okla kırmızı çerçeveli ValueError kutusuna gider. data-focus all durumunda vurgu yoktur ve alt bant boştur. data-focus auto durumunda 1. kutu kalın çivit mavisi çerçeveyle öne çıkar, 2. ve 3. kutu gri ve soluktur; altta print(3 + 4.0) ve print(type(3 + 4.0)) satırları ve Çıktı panelinde 7.0 ile <class 'float'> yazar. data-focus fail durumunda 3. kutu kalın çivit mavisi çerçeveyle öne çıkar, 1. ve 2. kutu gri ve soluktur; altta üç satır ve kırmızı son satırları: int("3.5"): ValueError: invalid literal for int() with base 10: '3.5'; float("3,5"): ValueError: could not convert string to float: '3,5'; int("abc"): ValueError: invalid literal for int() with base 10: 'abc'. 1 Otomatik 3 + 4.0 int float 7.0 float 2 Açıkça int("4") 4 float("3.25") 3.25 str(4) "4" 3 Çevrilemeyen int("abc") ValueError print(3 + 4.0) print(type(3 + 4.0)) 7.0 <class 'float'> int("3.5") ValueError: invalid literal for int() with base 10: '3.5' float("3,5") ValueError: could not convert string to float: '3,5' int("abc") ValueError: invalid literal for int() with base 10: 'abc'
Type conversion, bir değerden başka type'ta yeni bir değer üretmektir.

Otomatik çevirim

Type conversion: üç kutu Type conversion (tip çevirimi) için yan yana üç kutu, her biri çivit mavisi çerçeveli ve numaralı. 1 Otomatik: 3 (int, turuncu) artı 4.0 (float, hardal sarısı), aşağı bir okla 7.0 (float, hardal sarısı). 2 Açıkça: int("4") okla 4 (int, turuncu); float("3.25") okla 3.25 (float, hardal sarısı); str(4) okla "4" (str, yeşil). 3 Çevrilemeyen: int("abc") kırmızı bir okla kırmızı çerçeveli ValueError kutusuna gider. data-focus all durumunda vurgu yoktur ve alt bant boştur. data-focus auto durumunda 1. kutu kalın çivit mavisi çerçeveyle öne çıkar, 2. ve 3. kutu gri ve soluktur; altta print(3 + 4.0) ve print(type(3 + 4.0)) satırları ve Çıktı panelinde 7.0 ile <class 'float'> yazar. data-focus fail durumunda 3. kutu kalın çivit mavisi çerçeveyle öne çıkar, 1. ve 2. kutu gri ve soluktur; altta üç satır ve kırmızı son satırları: int("3.5"): ValueError: invalid literal for int() with base 10: '3.5'; float("3,5"): ValueError: could not convert string to float: '3,5'; int("abc"): ValueError: invalid literal for int() with base 10: 'abc'. 1 Otomatik 3 + 4.0 int float 7.0 float 2 Açıkça int("4") 4 float("3.25") 3.25 str(4) "4" 3 Çevrilemeyen int("abc") ValueError print(3 + 4.0) print(type(3 + 4.0)) 7.0 <class 'float'> int("3.5") ValueError: invalid literal for int() with base 10: '3.5' float("3,5") ValueError: could not convert string to float: '3,5' int("abc") ValueError: invalid literal for int() with base 10: 'abc'
int ile float birlikte kullanılınca sonuç float olur.

int(), float() ve str()

int(), float() ve str() ile çevirim ve sonrası Açıkça type conversion, üç satır, her satırda değer, function kutusu ve sonuç oklarla bağlı, type etiketi kutunun sağında. Satır 1: "4" (str, yeşil), int() kutusu, 4 (int, turuncu). Satır 2: "3.25" (str, yeşil), float() kutusu, 3.25 (float, hardal sarısı). Satır 3: 4 (int, turuncu), str() kutusu, "4" (str, yeşil). Altta gri bir kod panelinde print(int("4"), float("3.25"), str(4)); sağdaki Çıktı panelinde 4 3.25 4. Tıklayınca kod panelinin ikinci satırı print(int("4") + 1, float("3.25"), str(4) + "4") ve Çıktı'nın ikinci satırı 5 3.25 44 gelir; 44 açık mavi, çivit mavisi çerçeveli bir bantta, yanında str + str. En altta: Çevrilen değer, yeni type'ının işlemcileriyle kullanılır. "4" str int() 4 int "3.25" str float() 3.25 float 4 int str() "4" str print(int("4"), float("3.25"), str(4)) Çıktı 4 3.25 4 print(int("4") + 1, float("3.25"), str(4) + "4") 5 3.25 44 str + str Çevrilen değer, yeni type'ının işlemcileriyle kullanılır.
Type'ın adı parantezle yazılınca değeri o type'a çevirir.

"5" ve int("5")

"5", strint("5"), int
yazdırmakprint("5") # → 5print(int("5")) # → 5
+print("5" + "3") # → 53print(int("5") + 3) # → 8
*print("5" * 2) # → 55print(int("5") * 2) # → 10
-print("5" - 3) # → TypeErrorprint(int("5") - 3) # → 2

Ekranda ikisi de 5 yazar; farkı işlemler gösterir.

int() ve round()

int() keser, round() yuvarlar 3'ten 4'e bir sayı doğrusu, her 0.1'de bir çentik. Uçlarda 3 ve 4 (int, turuncu noktalar ve turuncu rakamlar); 3.9 (float, hardal sarısı nokta ve rakam). 3.9'dan iki ok çıkar: sola giden alçak ok 3'te biter, üstünde int() kesirli kısmı atar yazar; sağa giden yüksek ok 4'te biter, üstünde round() en yakına yuvarlar yazar ve bu ok açık mavi, çivit mavisi çerçeveli bir bantta. Altta print(int(3.9), round(3.9), round(3.2)) satırı ve Çıktı panelinde 3 4 3. 3 4 3.9 int() kesirli kısmı atar round() en yakına yuvarlar print(int(3.9), round(3.9), round(3.2)) Çıktı 3 4 3
İkinci sayı yazılmazsa round() en yakın tam sayıya yuvarlar; int() kesirli kısmı atar.

int() ve yaş

int() küsuratı atar Elle çizilmiş gibi basit bir resim. Sol üstte duvar takviminden bir yaprak var: "19 yıl" yazan kısım duvarda kalmış, "11 ay" yazan kısım yırtılıp düşüyor. Ortada üzerinde 1 ve 9 rakamı biçiminde iki mum olan bir doğum günü pastası duruyor. Sağda gülümseyen bir öğrenci pastayı gösteriyor; konuşma balonunda "19 yaşındayım." yazıyor. En altta int(19.9) → 19 kodu var. 19 yıl 11 ay 19 yaşındayım. int(19.9) → 19

19 yıl 11 aylık biri "19 yaşındayım" der; int() de küsuratı atar.


print(int(19.9))
print(round(2.8))
Çıktı
19
3

ValueError

Type conversion: üç kutu Type conversion (tip çevirimi) için yan yana üç kutu, her biri çivit mavisi çerçeveli ve numaralı. 1 Otomatik: 3 (int, turuncu) artı 4.0 (float, hardal sarısı), aşağı bir okla 7.0 (float, hardal sarısı). 2 Açıkça: int("4") okla 4 (int, turuncu); float("3.25") okla 3.25 (float, hardal sarısı); str(4) okla "4" (str, yeşil). 3 Çevrilemeyen: int("abc") kırmızı bir okla kırmızı çerçeveli ValueError kutusuna gider. data-focus all durumunda vurgu yoktur ve alt bant boştur. data-focus auto durumunda 1. kutu kalın çivit mavisi çerçeveyle öne çıkar, 2. ve 3. kutu gri ve soluktur; altta print(3 + 4.0) ve print(type(3 + 4.0)) satırları ve Çıktı panelinde 7.0 ile <class 'float'> yazar. data-focus fail durumunda 3. kutu kalın çivit mavisi çerçeveyle öne çıkar, 1. ve 2. kutu gri ve soluktur; altta üç satır ve kırmızı son satırları: int("3.5"): ValueError: invalid literal for int() with base 10: '3.5'; float("3,5"): ValueError: could not convert string to float: '3,5'; int("abc"): ValueError: invalid literal for int() with base 10: 'abc'. 1 Otomatik 3 + 4.0 int float 7.0 float 2 Açıkça int("4") 4 float("3.25") 3.25 str(4) "4" 3 Çevrilemeyen int("abc") ValueError print(3 + 4.0) print(type(3 + 4.0)) 7.0 <class 'float'> int("3.5") ValueError: invalid literal for int() with base 10: '3.5' float("3,5") ValueError: could not convert string to float: '3,5' int("abc") ValueError: invalid literal for int() with base 10: 'abc'
Sayıya benzemeyen bir str çevrilemez: ValueError.

Ariane 5'in ilk uçuşu (1996)

Ariane 5'in ilk uçuşu (1996)
Fotoğraf: Deadpan (Wikimedia Commons kullanıcısı), “Ariane 501 Fragment”, Wikimedia Commons, kamu malı. Boyutu küçültüldü.

Yazılım bir float'ı küçük tam sayı kutusuna sığdıramadı; roket parçalandı.

Python'da int taşmaz; tehlike ValueError.

input() ve int()

input() ve int(): içten dışa İç içe çağrının içten dışa çalışması. data-focus int durumu: üstte credits = int(input("Kredi: ")) satırı ve altında köşeli ayraçlar, üç numaralı adım. 1: input("Kredi: ") kısmının üstünde, "4" verir yazısı ve "4" (str, yeşil). 2: int(...) kısmının altında 4 (int, turuncu), yanında 4 verir; bu kutu açık mavi, çivit mavisi çerçeveli bir bantta. 3: credits = kısmının altında lacivert credits isim etiketi, oku 4 (int, turuncu) kutusunu gösterir. Altta print(credits * 2) satırı ve Çıktı panelinde Kredi: 4 (4 petrol mavisi, kullanıcının yazdığı) ve 8. data-focus float durumu aynı düzende: coefficient = float(input("Katsayı: ")); 1: "2.5" (str, yeşil); 2: 2.5 (float, hardal sarısı) bantta; 3: lacivert coefficient etiketi 2.5'i gösterir; altta print(coefficient * 4), Çıktı: Katsayı: 2.5 ve 10.0. credits = int(input("Kredi: ")) 1 "4" verir "4" str 2 4 int 4 verir 3 credits print(credits * 2) Çıktı Kredi: 4 8 coefficient = float(input("Katsayı: ")) 1 "2.5" verir "2.5" str 2 2.5 float 2.5 verir 3 coefficient print(coefficient * 4) Çıktı Katsayı: 2.5 10.0
İç içe yazılınca önce input(), sonra int() çalışır.

input() ve float()

input() ve int(): içten dışa İç içe çağrının içten dışa çalışması. data-focus int durumu: üstte credits = int(input("Kredi: ")) satırı ve altında köşeli ayraçlar, üç numaralı adım. 1: input("Kredi: ") kısmının üstünde, "4" verir yazısı ve "4" (str, yeşil). 2: int(...) kısmının altında 4 (int, turuncu), yanında 4 verir; bu kutu açık mavi, çivit mavisi çerçeveli bir bantta. 3: credits = kısmının altında lacivert credits isim etiketi, oku 4 (int, turuncu) kutusunu gösterir. Altta print(credits * 2) satırı ve Çıktı panelinde Kredi: 4 (4 petrol mavisi, kullanıcının yazdığı) ve 8. data-focus float durumu aynı düzende: coefficient = float(input("Katsayı: ")); 1: "2.5" (str, yeşil); 2: 2.5 (float, hardal sarısı) bantta; 3: lacivert coefficient etiketi 2.5'i gösterir; altta print(coefficient * 4), Çıktı: Katsayı: 2.5 ve 10.0. credits = int(input("Kredi: ")) 1 "4" verir "4" str 2 4 int 4 verir 3 credits print(credits * 2) Çıktı Kredi: 4 8 coefficient = float(input("Katsayı: ")) 1 "2.5" verir "2.5" str 2 2.5 float 2.5 verir 3 coefficient print(coefficient * 4) Çıktı Katsayı: 2.5 10.0
Ondalıklı bir girdi için float() kullanılır.

int() tek başına


credits = input("Kredi: ")
int(credits)
print(credits * 2)
Çıktı
Kredi: 4
44
int() tek başına: sonuç kayboluyor 3. satırdan sonraki memory. Lacivert credits ismi, okla "4" değerini (str, yeşil) gösteriyor. Altında soluk, gri çerçeveli bir 4 (int, turuncu) duruyor; ona hiçbir ok gitmiyor, yanında kimse saklamadı yazıyor: int(credits) bu değeri üretti ama hiçbir isme bağlanmadı. "4" değerinden aşağı inen ok credits * 2 ifadesini gösteriyor ve çıktı panelindeki 44'e gidiyor; 44 çivit mavisi çerçeveli açık mavi bir bandın içinde. credits ismi "4" değerini (str, yeşil) gösteriyor; soluk 4 (int, turuncu) hiçbir isme bağlı değil; çıktı 44. credits "4" str 4 int kimse saklamadı 44 credits * 2

Sonucu saklanmayan çevirim hiçbir şeyi değiştirmez.

credits = int(credits)

Gişede unutulan para Elle çizilmiş gibi basit bir resim. Sağda DÖVİZ tabelalı büro; tezgahın üstünde üzerinde 4 yazan turuncu bozuk para unutulmuş duruyor ve yanında int(credits) etiketi var. Camın arkasındaki görevli şaşkın. Solda öğrenci gülümseyerek uzaklaşıyor; elinde yine üzerinde "4" yazan yeşil kağıt var ve kağıtta lacivert bir credits isim etiketi asılı. DÖVİZ int()float()str() 4 int(credits) "4" credits

Bozdurulan para gişede unutulursa cebinizdeki para değişmez.


credits = input("Kredi: ")
credits = int(credits)
print(credits * 2)
Çıktı
Kredi: 4
8

5. f-string

Değerleri metnin içine yerleştirmek

AGNO'yu iki basamakla yazmak


print("AGNO:", 26.5 / 9)
Çıktı
AGNO: 2.9444444444444446
AGNO: 2 basamak ve fazlası 2.9444444444444446 (float, hardal sarısı) değeri yan yana 18 hardal sarısı kutuda, her karakter bir kutuda: 2, nokta, sonra 16 basamak. Noktadan sonraki ilk iki basamak, 9 ve 4, düz bir ayraçla işaretli: 2 basamak. Kalan 14 basamak kesik çizgili bir ayraçla işaretli: fazlası. Altta type etiketi float. Kaynak satırı: Hacettepe Ü. Ön Lisans ve Lisans Eğitim-Öğretim ve Sınav Yönetmeliği, Madde 25/3. 2 basamak fazlası 2 . 9 4 4 4 4 4 4 4 4 4 4 4 4 4 4 6 float Hacettepe Ü. Ön Lisans ve Lisans Eğitim-Öğretim ve Sınav Yönetmeliği, Madde 25/3

Yönetmelik AGNO'yu iki basamakla yazar; Ders 1'in çıktısı uzun.

f-string

f-string'in parçaları ve süslü parantezde hesap Gri bir kod panelinde print(f"Selam {name}") satırı; f"Selam ve kapanan tırnak str (yeşil). Numaralı işaretler: 1 f harfi, f-string; 2 Selam, olduğu gibi yazılır; 3 {name}, değeriyle değişir. {name} yuvası çivit mavisi çerçeveli açık mavi bir bantta. Altta lacivert name ismi okla "millet" değerini (str, yeşil) gösteriyor; o değerden yukarı, {name} yuvasına bir ok çıkıyor. Sağ üstte Çıktı panelinde: Selam millet. Tıklayınca altta ikinci bir kod satırı gelir: print(f"Bugün {2 + 3} ders var."); bant {2 + 3} yuvasına geçer. Altında 5 (int, turuncu) kutusundan yuvaya bir ok çıkar, 4 numaralı işaret: önce hesaplanır. Çıktı'nın ikinci satırı: Bugün 5 ders var. Sağ altta: Süslü parantezin içine bir hesap da yazılabilir. print(f"Selam {name} ") 1 f-string 2 olduğu gibi yazılır name "millet" str 3 değeriyle değişir Çıktı Selam millet print(f"Bugün {2 + 3} ders var.") 5 int 4 önce hesaplanır Bugün 5 ders var. Süslü parantezin içine bir hesap da yazılabilir.
f-string, tırnaktan önce f yazılan ve {} içine değer konan str'dir.

+ ve f-string


credits = 4
print("Kredi: " + str(credits))
print(f"Kredi: {credits}")
Çıktı
Kredi: 4
Kredi: 4
+ ile ve f-string ile aynı çıktı İki yol, üstten alta. + ile: 4 (int, turuncu) bir okla str() kutusuna, oradan "4" değerine (str, yeşil) gider; altında "Kredi: " + "4" satırı. f-string ile: 4 (int, turuncu) bir okla doğrudan {credits} yuvasına gider. İki yol da aynı çıktı paneline varır: Kredi: 4. Çıktı paneli çivit mavisi çerçeveli açık mavi bir bantta. + ile 4 str() "4" "Kredi: " + "4" f-string ile 4 {credits} Kredi: 4

f-string sayıyı str()'ye gerek kalmadan metnin içine yazar.

Virgül ve f-string


print("Kredi:", 4)
print(f"Kredi: {4}")
print("[", 4, "]")
print(f"[{4}]")
Çıktı
Kredi: 4
Kredi: 4
[ 4 ]
[4]
Virgül ve f-string: soru ve kural Soru: Her satır ne yazar? Dört satır çıktıdan sonra bir tıklamayla kural: Virgül araya boşluğu kendisi koyar; f-string'de her karakteri siz yazarsınız. Her satır ne yazar? Virgül araya boşluğu kendisi koyar; f-string'de her karakteri siz yazarsınız.

{:.2f}

{:.2f} ile iki basamak data-focus format durumu: solda gri kod panelinde gpa = 26.5 / 9 ve print(f"AGNO: {gpa:.2f}"), altında Çıktı: AGNO: 2.94. Sağda bir satır: 2.9444444444444446 (float, hardal sarısı) kutusu, okla :.2f kutusuna, oradan okla 2.94 çıktısına gider. 1 numaralı işaret .2 üzerinde: 2 basamak; 2 numaralı işaret f üzerinde: noktalı sayı olarak. 2.94 çıktısı çivit mavisi çerçeveli açık mavi bir bantta. Sağda altta soru: Bu satırda iki f var: ikisi aynı şey mi? Bir tıklamayla koddaki ilk f çivit mavisi bir halkayla işaretlenir ve iki satır çıkar: f"..." tırnaktan önceki f: f-string başlar; :.2f buradaki f: noktalı sayı olarak yaz. data-focus same durumu: kod paneli dört satır olur: gpa = 26.5 / 9, print(f"{gpa:.2f}"), print(gpa), print(f"{10.0:.2f}"); Çıktı: 2.94, 2.9444444444444446, 10.00. İlk satırın altında iki satır daha görünür. İkinci satır: aynı 2.9444444444444446 (float, hardal sarısı) kutusu biçim kutusu olmadan düz bir okla 2.9444444444444446 çıktısına gider, altında değer değişmedi yazar; bant bu float kutusuna geçer. Üçüncü satır: 10.0 (float, hardal sarısı) kutusu :.2f kutusundan geçip 10.00 olur, altında basamak sayısı sabit yazar. gpa = 26.5 / 9 print(f"AGNO: {gpa:.2f}") Çıktı AGNO: 2.94 gpa = 26.5 / 9 print(f"{gpa:.2f}") print(gpa) print(f"{10.0:.2f}") Çıktı 2.94 2.9444444444444446 10.00 2.9444444444444446 float :.2f 2.94 1 2 basamak 2 noktalı sayı olarak 2.9444444444444446 2.9444444444444446 değer değişmedi 10.0 :.2f 10.00 basamak sayısı sabit Bu satırda iki f var: ikisi aynı şey mi? f"..." tırnaktan önceki f: f-string başlar :.2f buradaki f: noktalı sayı olarak yaz
:.2f değeri noktadan sonra iki basamakla gösterir.

Gösterim ve değer

:.2f değeri değiştirmez, adım adım Solda gri kod panelinde dört satır: gpa = 26.5 / 9, print(f"{gpa:.2f}"), print(gpa), print(f"{10.0:.2f}"); altında Çıktı paneli, başta yalnızca 2.94. Sağda ilk satır: 2.9444444444444446 (float, hardal sarısı) kutusu :.2f kutusundan geçip 2.94 olur. Bir tıklamayla ikinci satır çıkar: aynı 2.9444444444444446 kutusu (çivit mavisi çerçeveli açık mavi bantta) biçim kutusu olmadan düz bir okla 2.9444444444444446 çıktısına gider, altında değer değişmedi yazar; Çıktı panelinde 2.9444444444444446 belirir. Bir tıklamayla daha üçüncü satır: 10.0 (float) :.2f kutusundan geçip 10.00 olur, altında basamak sayısı sabit; Çıktı panelinde 10.00. Kod panelinin altında soru: gpa'nın kendisi 2.94 mü oldu? En son, sorunun altında büyük harflerle: :.2f yalnızca gösterimi değiştirir; değer aynı kalır. gpa = 26.5 / 9 print(f"{gpa:.2f}") print(gpa) print(f"{10.0:.2f}") Çıktı 2.94 2.9444444444444446 float :.2f 2.94 gpa'nın kendisi 2.94 mü oldu? 2.9444444444444446 2.9444444444444446 değer değişmedi 2.9444444444444446 10.0 :.2f 10.00 basamak sayısı sabit 10.00 :.2f yalnızca gösterimi değiştirir; değer aynı kalır.

round() ve :.2f


print(round(10.0, 2))
print(f"{10.0:.2f}")
Çıktı
10.0
10.00
round() ve :.2f: soru ve kural Soru: AGNO'yu hep iki basamakla yazmak için hangisi? İki satır çıktıdan sonra bir tıklamayla kural: round() sondaki 0'ı yazmaz; :.2f hep iki basamak yazar. AGNO'yu hep iki basamakla yazmak için hangisi? round() sondaki 0'ı yazmaz; :.2f hep iki basamak yazar.

f harfini unutmak

f harfi unutulmuş bir SMS Elle çizilmiş gibi basit bir resim. Solda büyük bir telefon ekranında tek bir mesaj var: "Sayın {name},". Sağda bir öğrenci telefonu tutuyor, öbür eliyle başını kaşıyor ve şaşkın bakıyor; konuşma balonunda "{name} kim?" yazıyor. En altta print("Sayın {name}") kodu var. Sayın {name}, {name} kim? print("Sayın {name}")

f yoksa süslü parantezler metin olarak yazılır.

"Sayın {name}" diye başlayan SMS gibi.


name = "Ömer"
print("Sayın {name}")
print(f"Sayın {name}")
Çıktı
Sayın {name}
Sayın Ömer

6. String methods ve immutable str

Metni temizlemek ve değiştirmek

Method (metot)


print("mat101".upper())
Method çağrısının parçaları Gri kod panelinde "mat101".upper() ifadesi; "mat101" str (yeşil). Numaralı işaretler: 1 "mat101", değer; 2 nokta; 3 upper, method'un adı; 4 parantezler. Sağa giden ok, çivit mavisi çerçeveli açık mavi bir bandın içindeki yeni "MAT101" değerine (str, yeşil) varır; yanında yeni str yazar, altında type etiketi str. En altta Çıktı panelinde MAT101. "mat101" (str, yeşil), nokta, upper ve parantezler; ok yeni "MAT101" değerine (str, yeşil) gidiyor. "mat101".upper() 1 değer 3 method'un adı 2 nokta 4 parantezler "MAT101" str yeni str Çıktı MAT101
Method, bir değerin arkasına nokta ile yazılıp çalıştırılan bir işlemdir.

strip()

strip(), upper() ve lower() data-focus strip durumu (S73): solda lacivert code isim etiketi, oku dokuz yeşil kutuya gidiyor (str, yeşil): iki boşluk, m, a, t, 1, 0, 1 ve bir boşluk; boşluklar kutunun ortasında çivit mavisi bir noktayla gösterilir. strip() etiketli ok aşağıdaki satıra iniyor: altı yeşil kutu, m, a, t, 1, 0, 1, kalın çivit mavisi bir çerçevenin içinde. Silinen üç boşluk eski yerlerinde kırmızı kesikli boş kutular olarak duruyor, altlarında silindi yazısı. Sağda Çıktı paneli: [ mat101 ] ve [mat101]. data-focus case durumu (S74): code etiketi Mat101 değerinin altı yeşil kutusuna gidiyor (str, yeşil). upper() etiketli ok aşağıda MAT101 satırına iniyor; bu satır kalın çivit mavisi çerçeveli. lower() etiketli ok sağa ve aşağı giderek mat101 satırına ulaşıyor. Rakamlar iki satırda da aynı kalıyor. Çıktı paneli: MAT101 ve mat101. code m a t 1 0 1 m a t 1 0 1 silindi silindi strip() Çıktı [ mat101 ] [mat101] code M a t 1 0 1 M A T 1 0 1 m a t 1 0 1 upper() lower() Çıktı MAT101 mat101
strip() baştaki ve sondaki boşlukları siler.

Köşeli parantezler yalnızca boşlukları görmek için.

upper() ve lower()

strip(), upper() ve lower() data-focus strip durumu (S73): solda lacivert code isim etiketi, oku dokuz yeşil kutuya gidiyor (str, yeşil): iki boşluk, m, a, t, 1, 0, 1 ve bir boşluk; boşluklar kutunun ortasında çivit mavisi bir noktayla gösterilir. strip() etiketli ok aşağıdaki satıra iniyor: altı yeşil kutu, m, a, t, 1, 0, 1, kalın çivit mavisi bir çerçevenin içinde. Silinen üç boşluk eski yerlerinde kırmızı kesikli boş kutular olarak duruyor, altlarında silindi yazısı. Sağda Çıktı paneli: [ mat101 ] ve [mat101]. data-focus case durumu (S74): code etiketi Mat101 değerinin altı yeşil kutusuna gidiyor (str, yeşil). upper() etiketli ok aşağıda MAT101 satırına iniyor; bu satır kalın çivit mavisi çerçeveli. lower() etiketli ok sağa ve aşağı giderek mat101 satırına ulaşıyor. Rakamlar iki satırda da aynı kalıyor. Çıktı paneli: MAT101 ve mat101. code m a t 1 0 1 m a t 1 0 1 silindi silindi strip() Çıktı [ mat101 ] [mat101] code M a t 1 0 1 M A T 1 0 1 m a t 1 0 1 upper() lower() Çıktı MAT101 mat101
upper() harfleri büyütür, lower() küçültür; rakamlar aynı kalır.

Yeni Türk alfabesi ve noktalı i (1928)

Yeni Türk alfabesi ve noktalı i (1928)
Fotoğraf: Türkiye Cumhuriyeti Cumhurbaşkanlığı, “Ataturk-September 20, 1928”, Wikimedia Commons, kamu malı.

upper() ve lower() Türkçedeki i ve ı kuralını bilmez.

Python'da

print("i".upper(), "ı".upper())
word = "ırmak".upper()
print(word)
print(word.lower())
Çıktı
I I
IRMAK
irmak

replace()

replace() ve float() 3,25 değeri dört yeşil kutuda (str, yeşil): 3, virgül, 2, 5; virgül kutusu kalın çivit mavisi çerçeveli. Ok replace(",", ".") kutusuna, oradan yeni "3.25" değerine gidiyor (str, yeşil); bu kutu açık mavi, çivit mavisi çerçeveli bir bandın içinde. Çıktı paneli: 3.25. Tıklayınca "3.25" kutusundan float() etiketli bir ok 3.25 değerine iniyor (float, hardal sarısı), oradan + 1 etiketli ok 4.25 değerine (float, hardal sarısı) gidiyor; bant 4.25 kutusuna geçer, Çıktı panelinin ikinci satırı 4.25. Solda: Virgüllü katsayı böylece float'a çevrilir. 3 , 2 5 replace(",", ".") "3.25" str Çıktı 3.25 float() 3.25 float + 1 4.25 float 4.25 Virgüllü katsayı böylece float'a çevrilir.
replace(eski, yeni) her eskiyi yeniyle değiştirir.

Tırnak içindeki virgül metin; dışındaki eskiyi yeniden ayırır.

count()

count() ile saymak MAT101 altı yeşil kutuda (str, yeşil): M, A, T, 1, 0, 1; iki 1 kutusu kalın çivit mavisi çerçeveli. .count("1") etiketli ok 2 değerine gidiyor (int, turuncu); 2 kutusu açık mavi, çivit mavisi çerçeveli bir bantta. Altında "Hacettepe" (str, yeşil) değerinden .count("e") etiketli ok 3 değerine (int, turuncu) gidiyor. Sağda Çıktı paneli: 2 ve 3. M A T 1 0 1 .count("1") 2 int "Hacettepe" .count("e") 3 int Çıktı 2 3
count() bir parçanın kaç kez geçtiğini sayı olarak verir.

Immutable (değişmez)

str değişmez: iki program satır satır İki numaralı panel yan yana, satır satır; çalışan satır açık mavi bir bantta. Başta yalnızca 1. panel: kod code = "mat101", code.upper(), print(code); ilk satır bantta, lacivert code isim etiketinin oku "mat101" değerine gidiyor (str, yeşil), altında str, değişmez yazıyor; Çıktı paneli boş. Birinci tıklama: code.upper() satırı bantta; altta soluk, gri çerçeveli yeni bir "MAT101" kutusu, ona hiçbir ok gitmiyor, yanında kimse saklamadı yazısı. İkinci tıklama: print(code) satırı bantta, Çıktı: mat101. Üçüncü tıklama: sağda 2. panel, 1. panel gibi başlıyor. Kod code = "mat101", code = code.upper(), print(code); ilk satır bantta, code etiketinin oku "mat101" değerine gidiyor (str, yeşil), altında str, değişmez; Çıktı paneli boş. Dördüncü tıklama: code = code.upper() satırı bantta. Altta yeni bir "MAT101" değeri (str, yeşil), açık mavi, çivit mavisi çerçeveli bir bandın içinde; code etiketinin oku artık ona gidiyor, "mat101" değerine giden eski ok gri ve kesikli. Altında: Sonucu aynı isme atarsak isim yeni str'yi gösterir. Beşinci tıklama: print(code) satırı bantta, Çıktı: MAT101. 1 code = "mat101" code.upper() print(code) code "mat101" str, değişmez Çıktı "MAT101" kimse saklamadı mat101 2 code = "mat101" code = code.upper() print(code) code "mat101" str, değişmez Çıktı "MAT101" Sonucu aynı isme atarsak isim yeni str'yi gösterir. MAT101
str değişmez: method yeni bir str üretir, eskisi aynı kalır.

Immutable ve tükenmez kalem

str tükenmez kalemle yazılmış gibidir Elle çizilmiş gibi basit bir resim. Üstte code = code.upper() kodu var. Masada iki kağıt duruyor. Soldaki kağıtta mavi mürekkeple mat101 yazıyor; köşesinde isim etiketinin eskiden asılı olduğu yer kesikli bir çizgiyle belli. Sağdaki temize çekilmiş kağıtta MAT101 yazıyor ve lacivert code isim etiketi artık onda asılı; bir ok etiketin eski kağıttan yeni kağıda taşındığını gösteriyor. İki kağıdın arasında bir tükenmez kalem var. Sağda masada oturan bir öğrenci gülümsüyor. code = code.upper() mat101 MAT101 code

str tükenmez kalemle yazılmış gibidir: düzeltmek için temize çekilir.


code = "mat101"
old = code
code = code.upper()
print(code, old)
Çıktı
MAT101 mat101

Method'ları art arda çağırmak

Method'ları art arda çağırmak Solda altı satırlık kod: code = " mat101 ", clean = code.strip(), print(f"[{clean}]"), clean = clean.upper(), print(f"[{clean}]"), print(f"[{code.strip().upper()}]"). Altında Çıktı paneli: [mat101], [MAT101], [MAT101]. Sağda yukarıdan aşağı: lacivert code isim etiketi " mat101 " değerine gidiyor (str, yeşil; baştaki iki boşluk ve sondaki bir boşluk çivit mavisi noktalarla gösterilir). strip() etiketli ok yeni "mat101" değerine iniyor (str, yeşil), yanında yeni str yazısı; lacivert clean etiketi önce ona gidiyordu; bu ok artık gri ve kesikli, çünkü clean = clean.upper() satırından sonra clean etiketinin oku "MAT101" değerine gidiyor. upper() etiketli ok yeni "MAT101" değerine iniyor (str, yeşil), yanında yeni str; bu kutu açık mavi, çivit mavisi çerçeveli bir bandın içinde. İki okun yanında kesikli bir ayraç var, üstünde code.strip().upper() yazıyor: tek satır aynı iki adımı soldan sağa yapar. code = " mat101 " clean = code.strip() print(f"[{clean}]") clean = clean.upper() print(f"[{clean}]") print(f"[{code.strip().upper()}]") Çıktı [mat101] [MAT101] [MAT101] code " mat101 " strip() clean "mat101" yeni str upper() "MAT101" yeni str code.strip().upper()
Method'lar soldan sağa, art arda çağrılabilir.

input() ve method'lar


code = input("Ders kodu: ").strip().upper()
print(code)
Çıktı
Ders kodu:  mat123
MAT123

input() bir str verir; method'lar o str'ye art arda uygulanır.

Başında boşlukla mat123 yazıldı: code ne olur?

String methods özeti

methodne yaparörnekçıktı
strip()baştaki ve sondaki boşluğu atarprint("[" + " mat101 ".strip() + "]")[mat101]
upper()büyük harfe çevirirprint("Mat101".upper())MAT101
lower()küçük harfe çevirirprint("Mat101".lower())mat101
replace()bir parçayı başkasıyla değiştirirprint("3,25".replace(",", "."))3.25
count()bir parçanın kaç kez geçtiğini sayarprint("Hacettepe".count("e"))3

count() bir int verir; ötekiler yeni bir str verir, asıl str değişmez.

Python ne yazdırır?


name = "  nur  "
name.upper()
print(f"[{name.strip()}]")
      
  1. [NUR]
  2. [ nur ]
  3. [ NUR ]
  4. [nur]

7. Index, len() ve slicing

str'nin karakterlerine tek tek ulaşmak

Index (indis)

Index: code = "MAT101" ve üç karakter Solda Genel biçim: <str>[<index>]. Yanında kod: code = "MAT101". Altında lacivert code isim etiketi bir okla altı yeşil hücreyi gösteriyor (str): M, A, T, 1, 0, 1; hücrelerin üstünde 0'dan 5'e index'ler, sağ uçta str. Birinci tıklama: 0 numaralı hücre kalın çivit mavisi çerçeveli; altında code[0] ve yeşil "M" kutusu, etiketi str. İkinci tıklama: çerçeve 2 numaralı hücreye geçer; code[2] ve "T" (str). Üçüncü tıklama: çerçeve 5 numaralı hücreye geçer; code[5] ve "1" (str). Sonuçlar altta yan yana kalır. Genel biçim <str>[<index>] code = "MAT101" code M A T 1 0 1 index 0 1 2 3 4 5 str "M" str code[0] "T" str code[2] "1" str code[5]
Index, bir karakterin sıra numarasıdır; 0'dan başlar.

len() ve length (uzunluk)

len(): karakter sayısı Solda Genel biçim: len(<str>). Yanında kod: code = "MAT101". Altında lacivert code isim etiketi altı yeşil hücreyi gösteriyor (str): M, A, T, 1, 0, 1; index numarası yok. Birinci tıklama: altı hücrenin altında çivit mavisi bir parantez, ortasında len(code), oktan sonra 6 (int, turuncu). İkinci tıklama: altta iki satır daha: len("A") 1 ve len("") 0 (int, turuncu). Genel biçim len(<str>) code = "MAT101" code M A T 1 0 1 str 6 int len(code) 1 int 0 int len("A") len("")
len(), bir str'nin length'ini, yani karakter sayısını verir.

Son index

Son index: uzunluk 7, son index 6 Üstte soru: player 7 karakterli bir str. Son karakterin index'i kaç? Sağ üstte kod: player = "Iniesta". Lacivert player isim etiketi yedi yeşil hücreyi gösteriyor (str): I, n, i, e, s, t, a; altlarında çivit mavisi parantez, len(player) ve 7 (int, turuncu). Birinci tıklama, cevap: hücrelerin üstünde 0'dan 6'ya index'ler; son hücre kalın çivit mavisi çerçeveli, üstünde son index yazıyor. İkinci tıklama, altta büyük yazıyla: Son karakterin index'i len() - 1'dir: 7 - 1 = 6. player 7 karakterli bir str. Son karakterin index'i kaç? player = "Iniesta" player I n i e s t a str 7 int len(player) index 0 1 2 3 4 5 6 son index Son karakterin index'i len() - 1'dir: 7 - 1 = 6.

IndexError


player = "Iniesta"
print(player[7])
Çıktı
Traceback (most recent call last):  File "…/python-kurs/example.py", line 2, in <module>2    print(player[7])          ~~~~~~^^^IndexError: string index out of range1

Index 0'dan 6'ya kadar; player[7] diye bir karakter yok.

Dijkstra'nın EWD831 notu (1982)

Edsger W. Dijkstra'nın siyah beyaz portresi.
Fotoğraf: Hamilton Richards, “Edsger Wybe Dijkstra”, Wikimedia Commons, CC BY-SA 3.0. Boyutu küçültüldü.

Dijkstra (1982): bir elemanın index'i, önündeki eleman sayısıdır.

player[6], yani a: önünde 6 harf var.

Negatif index

Negatif index: sondan saymak Üstte kod: code = "MAT101". Lacivert code isim etiketi altı yeşil hücreyi gösteriyor (str): M, A, T, 1, 0, 1; üstlerinde 0'dan 5'e index'ler. Birinci tıklama: hücrelerin altında açık mavi bir şeritte negatif index'ler, -6'dan -1'e; solunda negatif index yazıyor. İkinci tıklama: son hücre kalın çivit mavisi çerçeveli; altında code[-1] ve yeşil "1" (str). Üçüncü tıklama: çerçeve ilk hücreye geçer; altında code[-6] ve "M" (str). code = "MAT101" code M A T 1 0 1 index 0 1 2 3 4 5 str negatif index -6 -5 -4 -3 -2 -1 "1" str code[-1] "M" str code[-6]
Negatif index sondan sayar; -1 son karakterdir.

Slicing (dilimleme)

Slicing: code[0:3], hücre hücre Solda Genel biçim: <str>[<başla>:<bitiş>]. Yanında kod: code = "MAT101". Lacivert code isim etiketi altı yeşil hücreyi gösteriyor (str): M, A, T, 1, 0, 1; üstlerinde 0'dan 5'e index'ler. Solda altta code[0:3]. Her tıklamada bir hücre: 0 numaralı hücre çivit mavisi çerçeveli, oku aşağıda yeni bir M hücresine iner; sonra 1 numaralı A, sonra 2 numaralı T; alttaki hücreler yan yana MAT olur. Son tıklamada 3 numaralı hücre gri kesik çizgili, altında alınmaz yazıyor; alttaki üç hücre çivit mavisi çerçeveyle tek bir parça, yanında str. Genel biçim <str>[<başla>:<bitiş>] code = "MAT101" code M A T 1 0 1 index 0 1 2 3 4 5 str code[0:3] M A T alınmaz str
Slicing bir parça alır: başla dahil, bitiş dahil değil.

code[:3] ve code[3:]

Slicing: başla ya da bitiş yazılmazsa Üstte kod: code = "MAT101". Lacivert code isim etiketi altı yeşil hücreyi gösteriyor (str): M, A, T, 1, 0, 1; üstlerinde 0'dan 5'e index'ler. Her tıklamada bir satır, her satırda solda ifade, sağında alınan hücreler aynı sütunlarda, çivit mavisi çerçeveli, sonunda str ve bir açıklama. Birinci satır: code[:3], M, A, T, bölüm kodu. İkinci satır: code[3:], ok boş sütunları geçip 1, 0, 1'e gider, ders numarası. Üçüncü satır: code[:], altı hücrenin hepsi, hepsi. code = "MAT101" code M A T 1 0 1 index 0 1 2 3 4 5 str code[:3] M A T str bölüm kodu code[3:] 1 0 1 str ders numarası code[:] M A T 1 0 1 str hepsi
Başla yazılmazsa baştan, bitiş yazılmazsa sona kadar.

Slicing adım adım

Klavyeden gelen str de dilimlenir; code değişmez.

Slicing ve adım

Slicing ve adım: code[::2] ve code[::-1] Solda Genel biçim: <str>[<başla>:<bitiş>:<adım>]. Yanında kod: code = "MAT101". Lacivert code isim etiketi altı yeşil hücreyi gösteriyor (str): M, A, T, 1, 0, 1; üstlerinde 0'dan 5'e index'ler. Birinci tıklama: 0, 2 ve 4 numaralı hücreler çivit mavisi çerçeveli, altlarında birer atlayan oklar; altta code[::2] oku "MT0" kutusuna (str, yeşil). İkinci tıklama: çerçeveler ve atlayan oklar kalkar, son hücre çivit mavisi çerçeveli; hücrelerin altında sondan başa beş kısa ok, her biri bir önceki hücreye: 5'ten 4'e, 4'ten 3'e, 3'ten 2'ye, 2'den 1'e, 1'den 0'a; altta code[::-1] oku "101TAM" kutusuna (str, yeşil), kutu açık mavi, çivit mavisi çerçeveli bir bantta; en altta: Adım eksiyse boş başla sondan, boş bitiş baştan demektir. Genel biçim <str>[<başla>:<bitiş>:<adım>] code = "MAT101" code M A T 1 0 1 index 0 1 2 3 4 5 str "MT0" str code[::2] "101TAM" str code[::-1] Adım eksiyse boş başla sondan, boş bitiş baştan demektir.
Üçüncü sayı adımdır; -1 adımı str'yi tersten okur.

Index ve slicing özeti

code = "MAT101"örnekçıktı
ilk karakterprint(code[0])M
son karakterprint(code[-1])1
ilk üç karakterprint(code[:3])MAT
3. index'ten sonaprint(code[3:])101
ikişer atlayarakprint(code[::2])MT0
karakter sayısıprint(len(code))6

Köşeli parantezde tek sayı bir karakter, iki nokta bir parça verir.

10 dakika ara

2A
Metinle çalışmak: str, input(), f-string, string methods, slicing
2B
Programa karar verdirmek: comparison, and/or/not, if, elif

Sırada 2B

2B'nin hedefi

Tek yol ve yol ayrımı Elle çizilmiş gibi basit bir resim, iki bölme. Solda yukarı doğru uzanan düz, tek bir yol; yanında gülümseyen bir öğrenci duruyor, yolun yanında tek yol yazıyor. Sağda aynı yol bir yerde ikiye ayrılıyor; ayrımın yanındaki tabelada score >= 50 yazıyor. Yolun başındaki öğrenci tabelaya bakıp Hangi yol? diye soruyor. tek yol score >= 50 Hangi yol?
Şimdiye kadar program tek yoldan gitti; bundan sonra şarta göre yol seçecek.

2B konuları

Bu yarıda programa karar verdirmeyi öğreneceksiniz.

  1. 8. Comparison operators ve bool==, !=, <, >, <=, >=, in; cevap True ya da False
  2. 9. Logical operatorsand, or, not; iki kıyaslamayı tek şartta birleştirmek
  3. 10. if ve elsecontrol structures, indentation; iki yoldan biri
  4. 11. elifüç ve daha fazla yol, Madde 24'ün tablosu

8. Comparison operators ve bool

İki value'yu kıyaslamak ve cevabı saklamak

Operator aileleri

Operator aileleri Kursta görülecek dört operator ailesi, dört sütun. Arithmetic, 7 operator: + - * / // % **; bu derste başlığı açık mavi ve çivit mavisi çerçeveyle vurgulu. Comparison, 6 operator: == != < > <= >=. Logical, 3 operator: and or not. Membership, 1 operator: in. Bu üç ailenin hücreleri gri kesikli, yazıları gri, başlıklarının sağında hangi derste görüleceği yazıyor: Ders 1'de Ders 2, Ders 2'de 2B. + ve * hücrelerinde Ders 2A için boş bir ikinci satır yeri var (str ile). + str ile - * str ile / // % ** Arithmetic 7 Ders 22B == != < > <= >= Comparison 6 Ders 22B and or not Logical 3 Ders 22B in Membership 1 Ders 22B
Ders 1'deki tabloya bugün üç aile ekleniyor.

Comparison operators (kıyaslama işlemcileri)

Altı comparison operator Altı comparison operator (kıyaslama işlemcisi), sordukları sorular ve 7 ile 5'li örneklerin cevapları. Sol sütun: == eşit mi?, 7 == 7, True; != eşit değil mi?, 7 != 7, False; < küçük mü?, 7 < 5, False. Sağ sütun: > büyük mü?, 7 > 5, True; <= küçük ya da eşit mi?, 7 <= 6, False; >= büyük ya da eşit mi?, 7 >= 7, True. Örneklerdeki 7, 5 ve 6 int (turuncu); cevaplar bool (deniz yeşili). Alttaki satır: Cevap her zaman True ya da False'tur. 6 comparison operator == eşit mi? 7 == 7 True != eşit değil mi? 7 != 7 False < küçük mü? 7 < 5 False > büyük mü? 7 > 5 True <= küçük ya da eşit mi? 7 <= 6 False >= büyük ya da eşit mi? 7 >= 7 True Cevap her zaman True ya da False'tur.
Comparison operator iki value'yu kıyaslar; her biri bir soru sorar.

bool (mantıksal tip)

bool'un iki value'su Solda bool başlıklı bir çerçeve; içinde yalnızca iki value: True ve False, ikisi de bool (deniz yeşili), altlarında type etiketi bool. Sağda iki soru: 4 > 3, büyük mü?, oku True'yu gösterir; 4 < 3, küçük mü?, oku False'u gösterir; 4 ve 3 int (turuncu). Çıktı paneli: True False ve <class 'bool'>. Alttaki satır: bool'un iki value'su vardır. bool True bool False bool 4 > 3 büyük mü? True 4 < 3 küçük mü? False Çıktı True False <class 'bool'> bool'un iki value'su vardır.
bool type'ının yalnızca iki value'su vardır: True ve False.

bool, adını George Boole'dan alır.

True ve False'un yazılışı

True, "True" ve true Üç yazılış, üç satır; her satırda soldan sağa kod, ok, Python'un gördüğü ve ekrana yazılan. Birinci satır print(True, type(True)): True bir bool value'dur (deniz yeşili), açık mavi bant ve çivit mavisi çerçeveyle vurgulu, altında type'ı bool; çıktı True <class 'bool'>. İkinci satır print("True", type("True")): "True" tırnak içinde bir str'dir (yeşil), altında type'ı str; çıktı True <class 'str'>. Üçüncü satır print(true): küçük harfli true lacivert bir isim etiketidir; kırmızı oku kırmızı kesik çizgili boş bir kutuya gider, yanında böyle bir isim yok yazar. En altta kırmızı: NameError: name 'true' is not defined. Did you mean: 'True'? print(True, type(True)) True bool True <class 'bool'> print("True", type("True")) "True" str True <class 'str'> print(true) true böyle bir isim yok NameError: name 'true' is not defined. Did you mean: 'True'?
True ve False büyük harfle ve tırnaksız yazılır.

Data types ve bool

value
  1. Numbers(sayılar)

    1. Integral

      • int7
      • boolTrue
    2. Real

      • float3.5
  2. Sequences(diziler)

      • str"7"
      • rangeDers 3
      • tupleDers 5
      • listDers 5
  3. Set types(kümeler)

    • setDers 5
  4. Mappings

    • dictDers 5
  5. None

    • NoneTypeDers 4
bu derstedaha öncesonraki derslerde

bool, Numbers altında int'in yanında durur.

Kıyaslama örnekleri


print(10 == 10.0, "10" == 10, "B1" == "b1")
Çıktı
True False False
Üç kıyaslama: == ile eşit mi? Üç sütun, her birinde tek bir == kıyaslaması. Birinci: 10 (int, turuncu) == 10.0 (float, hardal sarısı), eşit mi?, cevap True. İkinci: "10" (str, yeşil) == 10 (int, turuncu), eşit mi?, cevap False; bu cevap çivit mavisi çerçeveli açık mavi bantta, altında hata yok, yalnızca False. Üçüncü: "B1" (str, yeşil) == "b1" (str, yeşil), eşit mi?, cevap False. Cevaplar bool (deniz yeşili). 10 int == 10.0 float eşit mi? True "10" str == 10 int eşit mi? False hata yok, yalnızca False "B1" str == "b1" str eşit mi? False
"10" ile 10 eşit değildir; Python hata vermez, False der.

str'leri kıyaslamak


print(ord("Z"), ord("a"))
print("Z" < "a")
print("Zehra" < "ali")
Çıktı
90 97
True
True
str'leri kıyaslamak: soru ve kural Soru: "Z" < "a" True mu, False mu? Üç satır çıktıdan sonra bir tıklamayla kural: str'ler harf harf, karakterlerin sayılarıyla kıyaslanır. "Z" < "a" True mu, False mu? str'ler harf harf, karakterlerin sayılarıyla kıyaslanır.

bool value'yu saklamak

Bir isim bool value'yu gösterir Solda üç satırlık kod: coefficient = 2.5, passed = coefficient >= 1.75, print(passed, type(passed)); 2.5 ve 1.75 float (hardal sarısı). Altında çıktı: True <class 'bool'>. Sağda lacivert isim etiketleri: coefficient 2.5'i (float, hardal sarısı) gösterir. Aradaki satır 2.5 >= 1.75 hesaplanır ve oku aşağıda True'ya iner, yanında önce sağ taraf hesaplanır yazar. passed True'yu (bool, deniz yeşili) gösterir; True kutusu çivit mavisi çerçeveli açık mavi bantta. coefficient = 2.5 passed = coefficient >= 1.75 print(passed, type(passed)) True <class 'bool'> coefficient 2.5 float 2.5 >= 1.75 önce sağ taraf hesaplanır passed True bool
Kıyaslamanın sonucu da bir value'dur; bir isim onu gösterebilir.

bool ve hedef program

bool ve hedef program Solda Bu bölümde başlığı altında iki satırlık kod: grade_point = 2.50 ve print(grade_point >= 1.75); 2.50 ve 1.75 float, hardal sarısı. grade_point >= 1.75 kısmı açık mavi bantta, çivit mavisi çerçeveli. Ok aşağıda çıktıya iner: True. Sağda 10. bölümde başlığı altında soluk ve kesik çizgili bir kutuda hedef programın iki satırı: if grade_point >= 1.75: ve içeride status = "geçti"; altında: True ise geçti. Bu bölümde grade_point = 2.50 print( grade_point >= 1.75 ) Çıktı True 10. bölümde if grade_point >= 1.75: status = "geçti" True ise geçti
Hedef programdaki "geçti" kararı tek bir kıyaslamaya bakar.

= ve ==

= ve == Solda = başlığı ve assignment etiketi: credits = 4; lacivert isim etiketi credits, 4'ü gösterir (int, turuncu); altında isme value bağlar, çıktı vermez. Sağda == başlığı ve comparison operator etiketi: credits == 4; eşit mi? kutusundan çıkan ok True'yu gösterir (bool, deniz yeşili). Bir tıklamayla altta soru satırı çıkar: x 5 iken x == x + 1. Bir tıklamayla daha cevap: False (bool, deniz yeşili); 5 ile 6 eşit değil; x = x + 1 ise x'i 6 yapar. = assignment credits = 4 credits 4 int isme value bağlar, çıktı vermez == comparison operator credits == 4 eşit mi? True bool x 5 iken x == x + 1 False 5 ile 6 eşit değil; x = x + 1 ise x'i 6 yapar
= isme value bağlar; == iki value eşit mi diye sorar.

== ve float


print(0.1 + 0.2 == 0.3)
print(round(0.1 + 0.2, 2) == 0.3)
print(0.5 + 0.25 == 0.75)
Çıktı
False
True
True
== ve float: soru ve kural Soru: Her satır True mu, False mu? Üç satır çıktıdan sonra bir tıklamayla kural: İki float'ı == ile kıyaslamadan önce yuvarlayın. Her satır True mu, False mu? İki float'ı == ile kıyaslamadan önce yuvarlayın.

in


print("MAT" in "MAT101", "mat" in "MAT101")
Çıktı
True False
in: "MAT" ve "mat", "MAT101" içinde MAT101'in altı harfi (str, yeşil); MAT ilk üç harfte geçer, True; mat geçmez, False (bool, deniz yeşili). İki satırda da MAT101'in altı harfi yan yana yeşil kutularda: M, A, T, 1, 0, 1. Birinci satırın solunda "MAT" in; ilk üç kutu M, A, T kalın çivit mavisi çerçeveyle vurgulu, üstlerinde bir köşeli çizgi ve "burada geçiyor"; sağda bir ok ve True. İkinci satırın solunda "mat" in; hiçbir kutu vurgulu değil, altında "küçük harfle hiçbir yerde yok"; sağda bir ok ve False. M A T 1 0 1 "MAT" in True bool M A T 1 0 1 "mat" in False bool burada geçiyor küçük harfle hiçbir yerde yok
in, bir str'nin başka bir str'nin içinde geçip geçmediğini sorar.

Kıyaslama ve TypeError

Kıyaslama ve TypeError: klavyeden gelen "85" > 50 İki sütun. Solda kırmızı başlık Geçersiz: score = input("Puan: ") ve print(score > 50); altında 8 ve 5 tuşlarından bir ok yeşil "85" kutusuna (str) gider, "85" ile 50 (int, turuncu) arasındaki > işaretinin üstünde kırmızı çarpı; en altta kırmızı: TypeError: '>' not supported between instances of 'str' and 'int'. Sağda petrol mavisi başlık Geçerli: score = int(input("Puan: ")) ve print(score > 50); 8 ve 5 tuşlarından çıkan ok açık mavi zeminli çivit mavisi çerçeveli int() kutusundan geçip 85 (int) kutusuna gider; 85 > 50, bir ok ve True (bool, deniz yeşili). Altta: == hata vermez; < ve > str ile sayıyı kıyaslamaz. Geçersiz score = input("Puan: ") print(score > 50) 8 5 "85" str > 50 int TypeError: '>' not supported between instances of 'str' and 'int' Geçerli score = int(input("Puan: ")) print(score > 50) 8 5 int() 85 int > 50 int True bool == hata vermez; < ve > str ile sayıyı kıyaslamaz.
Klavyeden gelen puan str'dir: kıyaslamadan önce int().

Python ne yazdırır?


print(2.0 == 2)
print("7" != 7)
print("x" in "Hacettepe")
      
  1. True False False
  2. False True False
  3. True True False
  4. TypeError

9. Logical operators

Kıyaslamaları and, or ve not ile birleştirmek

Logical operators (mantıksal işlemciler)

Operator aileleri Kursta görülecek dört operator ailesi, dört sütun. Arithmetic, 7 operator: + - * / // % **; bu derste başlığı açık mavi ve çivit mavisi çerçeveyle vurgulu. Comparison, 6 operator: == != < > <= >=. Logical, 3 operator: and or not. Membership, 1 operator: in. Bu üç ailenin hücreleri gri kesikli, yazıları gri, başlıklarının sağında hangi derste görüleceği yazıyor: Ders 1'de Ders 2, Ders 2'de 2B. + ve * hücrelerinde Ders 2A için boş bir ikinci satır yeri var (str ile). + str ile - * str ile / // % ** Arithmetic 7 Ders 22B == != < > <= >= Comparison 6 Ders 22B and or not Logical 3 Ders 22B in Membership 1 Ders 22B
Üç logical operator vardır: and, or ve not.

and (ve)


print(True and True, True and False)
Çıktı
True False
Doğruluk tablosu: and, or, not Doğruluk tablosu, beş sütun: a, b, a and b, a or b, not a. Dört satır: a True, b True: and True, or True, not a False. a True, b False: and False, or True, not a False. a False, b True: and False, or True, not a True. a False, b False: and False, or False, not a True. a ve b hücreleri bool (deniz yeşili); sonuçlarda True açık mavi zeminde petrol mavisi, False beyaz zeminde gri yazılır. Bu durumda a and b sütunu kalın çivit mavisi çerçeveyle vurgulu; a or b ve not a soluk, kesikli gri çerçeveli. (data-now="or": a or b sütunu vurgulu. data-now="not": not a sütunu vurgulu.) a True True False False b True False True False a and b True False False False a or b True True True False not a False False True True
and, iki taraf da True ise True verir.

and ile iki kıyaslama

and ve or: credits >= 3 ile coefficient >= 1.75 credits 3'ü (int, turuncu), coefficient 1.5'i (float, hardal sarısı) gösterir; kıyaslamalar True ve False (bool, deniz yeşili); and sonucu False. Solda iki lacivert isim etiketi: credits oktan 3'e, coefficient oktan 1.5'e. Sağda iki kıyaslama kutusu: credits >= 3 aşağı okla True'ya, coefficient >= 1.75 aşağı okla False'a. İki değerden birer ok ortadaki and kutusuna gider; sonucu belirleyen False'tan gelen ok koyu, True'dan gelen gri. and kutusundan bir ok sonuç kutusuna: False, açık mavi zeminli çivit mavisi çerçeve içinde. Altındaki çıktı panelinde False. (data-now="or": kutuda or, sonuç True, True'dan gelen ok koyu, False'tan gelen gri, çıktı True.) credits 3 int coefficient 1.5 float credits >= 3 coefficient >= 1.75 True bool False bool and or False True bool Çıktı False True
Bir taraf False ise and'in sonucu False olur.

or (veya)


print(True or False, False or False)
Çıktı
True False
Doğruluk tablosu: and, or, not Doğruluk tablosu, beş sütun: a, b, a and b, a or b, not a. Dört satır: a True, b True: and True, or True, not a False. a True, b False: and False, or True, not a False. a False, b True: and False, or True, not a True. a False, b False: and False, or False, not a True. a ve b hücreleri bool (deniz yeşili); sonuçlarda True açık mavi zeminde petrol mavisi, False beyaz zeminde gri yazılır. Bu durumda a and b sütunu kalın çivit mavisi çerçeveyle vurgulu; a or b ve not a soluk, kesikli gri çerçeveli. (data-now="or": a or b sütunu vurgulu. data-now="not": not a sütunu vurgulu.) a True True False False b True False True False a and b True False False False a or b True True True False not a False False True True
or, en az bir taraf True ise True verir.

or ile iki kıyaslama

and ve or: credits >= 3 ile coefficient >= 1.75 credits 3'ü (int, turuncu), coefficient 1.5'i (float, hardal sarısı) gösterir; kıyaslamalar True ve False (bool, deniz yeşili); and sonucu False. Solda iki lacivert isim etiketi: credits oktan 3'e, coefficient oktan 1.5'e. Sağda iki kıyaslama kutusu: credits >= 3 aşağı okla True'ya, coefficient >= 1.75 aşağı okla False'a. İki değerden birer ok ortadaki and kutusuna gider; sonucu belirleyen False'tan gelen ok koyu, True'dan gelen gri. and kutusundan bir ok sonuç kutusuna: False, açık mavi zeminli çivit mavisi çerçeve içinde. Altındaki çıktı panelinde False. (data-now="or": kutuda or, sonuç True, True'dan gelen ok koyu, False'tan gelen gri, çıktı True.) credits 3 int coefficient 1.5 float credits >= 3 coefficient >= 1.75 True bool False bool and or False True bool Çıktı False True
Aynı value'larla or True verir; bir tarafın True olması yeter.

not (değil)


coefficient = 1.5
print(not (coefficient >= 1.75))
Çıktı
True
Doğruluk tablosu: and, or, not Doğruluk tablosu, beş sütun: a, b, a and b, a or b, not a. Dört satır: a True, b True: and True, or True, not a False. a True, b False: and False, or True, not a False. a False, b True: and False, or True, not a True. a False, b False: and False, or False, not a True. a ve b hücreleri bool (deniz yeşili); sonuçlarda True açık mavi zeminde petrol mavisi, False beyaz zeminde gri yazılır. Bu durumda a and b sütunu kalın çivit mavisi çerçeveyle vurgulu; a or b ve not a soluk, kesikli gri çerçeveli. (data-now="or": a or b sütunu vurgulu. data-now="not": not a sütunu vurgulu.) a True True False False b True False True False a and b True False False False a or b True True True False not a False False True True
not, True'yu False'a, False'u True'ya çevirir.

Geçerli puan aralığı

Geçerli puan aralığı: 87 ve 105 0'dan 120'ye bir sayı doğrusu, her 10'da bir çentik; 0, 50, 100 ve 120 yazılı. 0 ile 100 arası açık mavi bant, üstündeki köşeli çizginin etiketi score >= 0 and score <= 100. Bandın içinde 87 (int, turuncu) noktası ve kutusu, oktan sonra True (bool, deniz yeşili). Bandın dışında 105 (int, turuncu) noktası ve kutusu, oktan sonra False (bool, deniz yeşili). Alt satır: İki kıyaslama da True ise puan geçerlidir. score >= 0 and score <= 100 0 50 100 120 87 True 105 False İki kıyaslama da True ise puan geçerlidir.
Bir aralık, and ile bağlanan iki kıyaslamayla yazılır.

Parantez ve logical operators

Parantez and ile or'un sırasını değiştirir İki hesap ağacı. Solda True or False and False: önce and (1) False ile False'u birleştirir, sonuç False; sonra or (2) True ile bu False'u birleştirir, sonuç True. Çıktı: True. Sağda (True or False) and False: önce parantezdeki or (1) True ile False'u birleştirir, sonuç True; sonra and (2) bu True ile False'u birleştirir, sonuç False; bu sonuç açık mavi ve çivit mavisi çerçeveli bantta, çünkü parantez sonucu değiştirdi. Çıktı: False. Bütün value'lar bool, deniz yeşili. True or False and False True False False and False 1 or True 2 Çıktı True (True or False) and False True False False or True 1 and False 2 Çıktı False
and, or'dan önce yapılır; karışık bir satıra parantez yazılır.

Artık yıl kuralı (1582)


year = 2000
div4 = year % 4 == 0
div100 = year % 100 == 0
div400 = year % 400 == 0
print((div4 and not div100) or div400)
Çıktı
True
Artık yıl: year = 2100 olsaydı Soru: year = 2100 olsaydı? Bir tıklamayla cevap çıkar: Çıktı panelinde False; yanında 100'e bölünür, 400'e bölünmez. year = 2100 olsaydı? False 100'e bölünür, 400'e bölünmez

4'e bölünen yıl artık yıldır; 100'e bölünüyorsa 400'e de bölünmelidir.

Önce %, sonra ==; kalan 0 ise bölünür.

and ve SyntaxError

and ve SyntaxError Üstte gri kod panelinde score = 87 ve print(score >= 0 and <= 100) satırları; altında kırmızı şapkalar <= işaretinin tam altında ve kırmızı SyntaxError: invalid syntax. Altta iki sütun. Solda kırmızı başlık Geçersiz: score >= 0 kutusu, and düğümü ve and'in sağındaki <= 100 kırmızı kesik çizgili kutuda; kırmızı bir ok kutuyu gösterir ve altında kırmızı solunda value yok yazar. Sağda petrol mavisi başlık Geçerli: score >= 0, and ve score <= 100; eklenen score açık mavi bant ve çivit mavisi çerçeveyle vurgulu; and'den aşağı bir ok True'yu gösterir (bool, deniz yeşili), yanında score 87 iken yazar. 87, 0 ve 100 int (turuncu). score = 87 print(score >= 0 and <= 100) ^^ SyntaxError: invalid syntax Geçersiz score >= 0 and <= 100 solunda value yok Geçerli score >= 0 and score <= 100 True score 87 iken
and'in iki yanı da tam bir kıyaslama olmalıdır.

or ve tam kıyaslama

or ve tam kıyaslama Lacivert color ismi "yeşil" value'sunu gösterir (str, yeşil). Birinci satır: color == "kırmızı" or "mavi". Sol taraf False (bool, deniz yeşili); sağ taraf "mavi" (str, yeşil) bir kıyaslama değil, kırmızı yazıyla işaretli. Aralarında or. Sol taraf False olduğu için or sağ taraftaki "mavi"yi olduğu gibi verir; sonuç "mavi" açık mavi ve çivit mavisi çerçeveli bantta. Çıktı: mavi. İkinci satır: color == "kırmızı" or color == "mavi". İki kıyaslama da False (bool, deniz yeşili), sonuç False. Çıktı: False. color "yeşil" color == "kırmızı" or "mavi" Çıktı False or "mavi" bir kıyaslama değil "mavi" mavi color == "kırmızı" or color == "mavi" Çıktı False or False False False
or'un iki yanına da tam kıyaslama yazılır.

Sol taraf False ise or, sağdakini aynen verir: "mavi".

10. if ve else

Program bir şarta göre yol seçer

Algorithm (algoritma)

Algoritma, bir işin adım adım tarifidir.

Dışarı bak.

Yağmur varsa şemsiyeyle çık.

Yoksa şemsiyesiz çık.

Flowchart (akış şeması)

Algoritma ve flowchart Dışarı çıkma algoritmasının flowchart'ı. Başla ovalinden bir okla dışarı bak kutusuna, oradan yağmur var mı? eşkenar dörtgenine. Cevap True ise ok sağa, şemsiyeyle çık kutusuna; False ise ok aşağı, şemsiyesiz çık kutusuna. İki kutudan da birer ok Bitir ovaline gider. Altta üç şeklin anlamı: oval başlangıç ve bitiş, dikdörtgen bir adım, eşkenar dörtgen bir soru, cevabı True ya da False. Başla dışarı bak yağmur var mı? True şemsiyeyle çık False şemsiyesiz çık Bitir başlangıç ve bitiş bir adım bir soru: True ya da False
Flowchart, bir algoritmanın, yani adım adım bir tarifin çizimidir.

Control structures (kontrol yapıları)

Üç control structure Üç küçük akış şeması yan yana. Sequence (art arda çalıştırma): 1. satır, 2. satır, 3. satır kutuları oklarla alt alta. Repetition (tekrarlama): devam şartı baklavası; petrol mavisi True oku block kutusuna iner, block'tan bir ok geri dönüp baklavanın sol köşesine girer; kırmızı False oku sağ köşeden çıkar. Decision (karar): şart baklavası; petrol mavisi True oku block A'ya, kırmızı False oku block B'ye gider, iki yol aşağıda bir noktada birleşir. Ders 2'de (data-now decision): karar çerçevesi çivit mavisi, başlığı açık mavi bantta vurgulu; art arda çalıştırma düz; tekrarlama gri, kesik çizgili, sağ üstünde Ders 3 yazıyor. Ders 3'te (data-now repetition): tekrarlama vurgulu, öteki ikisi düz. Sequence (art arda çalıştırma) Ders 3 1. satır 2. satır 3. satır Repetition (tekrarlama) Ders 3 devam şartı True block False Decision (karar) Ders 3 şart True False block A block B
Her program üç yapıyla kurulur.

if

if: genel biçim, örnek ve çıktı, adım adım Solda Genel biçim: if <şart>: ve dört boşluk içeride <block>. Bir tıklamayla sağda Örnek çıkar: grade_point = 2.5, if grade_point >= 1.75:, dört boşluk içeride print("geçti"), print("bitti"); 2.5 ve 1.75 hardal sarısı (float), metinler yeşil (str). Bir tıklamayla daha altında Çıktı: geçti, bitti. Genel biçim if <şart>: <block> Örnek grade_point = 2.5 if grade_point >= 1.75: print("geçti") print("bitti") Çıktı geçti bitti
if satırı bir şart sorar ve iki noktayla biter.

if adım adım

Condition (şart) True ise block çalışır, False ise atlanır: 2.5 >= 1.75 True, 1.5 >= 1.75 False.

Indentation (girinti) ve block (blok)

Indentation ve block Numaralı satırlarla bir kod paneli, dört durum. Durum block: 1 grade_point = 2.5, 2 if grade_point >= 1.75:, 3 print("geçti"), 4 print("tebrikler"), 5 print("bitti") (2.5 ve 1.75 float, hardal sarısı; "geçti", "tebrikler" ve "bitti" str, yeşil). 3. ve 4. satırların başındaki dört boşluk dört çivit mavisi noktayla gösterilmiş; bu iki satır açık mavi ve çivit mavisi çerçeveli bir şeritte. 2. satırın sonundaki iki nokta çivit mavisi bir halkayla işaretli: iki nokta: block başlıyor. 3. ve 4. satırların sağında bir köşeli ayraç: block (4 boşluk). 5. satırın yanında: indentation yok: block'un dışında. Altta: Indentation Python'da süs değil, kuraldır. Durum colon: aynı beş satır, ama 2. satır 1.75'te biter, iki nokta yok; boş yer kırmızı kesik çizgili bir halkada, altında kırmızı bir şapka (^); üstte kırmızı: iki nokta yok; sağda kırmızı SyntaxError: expected ':' ve ondan halkaya kırmızı bir ok. Durum pycharm: aynı kod PyCharm editörü gibi, noktalar yok; 3. ve 4. satırlar seçili (açık mavi), solda bu iki satır boyunca ince gri dikey indentation çizgisi, 1 numaralı not: indentation çizgisi. Sağda iki tuş: Tab, sağa bir ok ve içeri; Shift+Tab, sola bir ok ve dışarı. Durum error: yalnızca üç satır: grade_point = 2.5, if grade_point >= 1.75: ve indentation olmadan print("geçti"); 3. satırın yanında küçük kırmızı bir işaret; iki nokta yine çivit mavisi halkada. Panelin altında kırmızı: IndentationError: expected an indented block after 'if' statement on line 2. 1 2 3 4 5 grade_point = 2.5 if grade_point >= 1.75: if grade_point >= 1.75 print("geçti") print("geçti") print("tebrikler") print("bitti") iki nokta: block başlıyor block (4 boşluk) indentation yok: block'un dışında iki nokta yok ^ SyntaxError: expected ':' 1 indentation çizgisi Tab içeri Shift+Tab dışarı IndentationError: expected an indented block after 'if' statement on line 2 Indentation Python'da süs değil, kuraldır.
Block, iki noktadan sonra indentation ile yazılan satırlardır.

if'in genel biçimindeki <block> budur.

PyCharm'da indentation

Indentation ve block Numaralı satırlarla bir kod paneli, dört durum. Durum block: 1 grade_point = 2.5, 2 if grade_point >= 1.75:, 3 print("geçti"), 4 print("tebrikler"), 5 print("bitti") (2.5 ve 1.75 float, hardal sarısı; "geçti", "tebrikler" ve "bitti" str, yeşil). 3. ve 4. satırların başındaki dört boşluk dört çivit mavisi noktayla gösterilmiş; bu iki satır açık mavi ve çivit mavisi çerçeveli bir şeritte. 2. satırın sonundaki iki nokta çivit mavisi bir halkayla işaretli: iki nokta: block başlıyor. 3. ve 4. satırların sağında bir köşeli ayraç: block (4 boşluk). 5. satırın yanında: indentation yok: block'un dışında. Altta: Indentation Python'da süs değil, kuraldır. Durum colon: aynı beş satır, ama 2. satır 1.75'te biter, iki nokta yok; boş yer kırmızı kesik çizgili bir halkada, altında kırmızı bir şapka (^); üstte kırmızı: iki nokta yok; sağda kırmızı SyntaxError: expected ':' ve ondan halkaya kırmızı bir ok. Durum pycharm: aynı kod PyCharm editörü gibi, noktalar yok; 3. ve 4. satırlar seçili (açık mavi), solda bu iki satır boyunca ince gri dikey indentation çizgisi, 1 numaralı not: indentation çizgisi. Sağda iki tuş: Tab, sağa bir ok ve içeri; Shift+Tab, sola bir ok ve dışarı. Durum error: yalnızca üç satır: grade_point = 2.5, if grade_point >= 1.75: ve indentation olmadan print("geçti"); 3. satırın yanında küçük kırmızı bir işaret; iki nokta yine çivit mavisi halkada. Panelin altında kırmızı: IndentationError: expected an indented block after 'if' statement on line 2. 1 2 3 4 5 grade_point = 2.5 if grade_point >= 1.75: if grade_point >= 1.75 print("geçti") print("geçti") print("tebrikler") print("bitti") iki nokta: block başlıyor block (4 boşluk) indentation yok: block'un dışında iki nokta yok ^ SyntaxError: expected ':' 1 indentation çizgisi Tab içeri Shift+Tab dışarı IndentationError: expected an indented block after 'if' statement on line 2 Indentation Python'da süs değil, kuraldır.
PyCharm iki noktadan sonra dört boşluğu kendisi koyar.

else

else: genel biçim, örnek ve çıktı, adım adım Solda Genel biçim: if <şart>:, dört boşluk içeride <block>, if ile aynı hizada else:, içeride <block>. Bir tıklamayla sağda Örnek çıkar: grade_point = 1.5, if grade_point >= 1.75:, print("geçti"), else:, print("kaldı"), print("bitti"); 1.5 ve 1.75 hardal sarısı (float), metinler yeşil (str). Bir tıklamayla daha altında Çıktı: kaldı, bitti. Genel biçim if <şart>: <block> else: <block> Örnek grade_point = 1.5 if grade_point >= 1.75: print("geçti") else: print("kaldı") print("bitti") Çıktı kaldı bitti
else, if ile aynı hizada yazılır; kendi şartı yoktur.

else adım adım

Şart False olunca else çalışır: iki yoldan tam biri. 2.5 >= 1.75 True, 1.5 >= 1.75 False.

if, else ve indentation

if ve else block'ları, adım adım Solda yedi satırlık kod: grade_point = 3.0, if grade_point >= 1.75:, girintili print("geçti") ve print("tebrikler"), else:, girintili print("kaldı"), girintisiz print("dönem bitti"); 3.0 ve 1.75 hardal sarısı (float), metinler yeşil (str). Girintili satırların solunda PyCharm'daki gibi ince gri girinti çizgileri. Sağda soru: Indentation nerede başlar, nerede biter? Tıklamalarla: if satırının sonundaki iki nokta çivit mavisi halkayla işaretlenir, 3. ve 4. satırlara if block'u ayracı ve iki noktadan sonra başlar yazısı gelir; else satırının iki noktası işaretlenir, 6. satıra else block'u ayracı gelir; 7. satırın sol kenarında çivit mavisi bir çizgi ve açık mavi kutuda sol kenara döndü: her zaman çalışır; sonra Çıktı: geçti, tebrikler, dönem bitti; en son alt satır: Sol kenara dönen satır her zaman çalışır. grade_point = 3.0 if grade_point >= 1.75: print("geçti") print("tebrikler") else: print("kaldı") print("dönem bitti") Indentation nerede başlar, nerede biter? if block'u iki noktadan sonra başlar else block'u sol kenara döndü: her zaman çalışır Çıktı geçti tebrikler dönem bitti Sol kenara dönen satır her zaman çalışır.

if ve Selam


name = input("Kime selam? ")
if name == "":
    name = "millet"
print(f"Selam {name}")
Çıktı
Kime selam? 
Selam millet
if ve Selam: boş cevap Boş cevap için izlenen küçük akış şeması: name = "" kutusu ("" yeşil, str), name == "" karar baklavası. Petrol mavisi True oku baklavanın sağından çıkıp aşağıdaki name = "millet" kutusuna iner; kutu açık mavi, çivit mavisi çerçeveli, "millet" yeşil (str). Oradan print(f"Selam {name}") kutusuna. Gri False oku baklavanın altından doğrudan print kutusuna iner (boş cevapta kullanılmadı). name = "" name == "" True name = "millet" False print(f"Selam {name}")

Boş cevapta name'e "millet" atanır.

if ve SyntaxError

Indentation ve block Numaralı satırlarla bir kod paneli, dört durum. Durum block: 1 grade_point = 2.5, 2 if grade_point >= 1.75:, 3 print("geçti"), 4 print("tebrikler"), 5 print("bitti") (2.5 ve 1.75 float, hardal sarısı; "geçti", "tebrikler" ve "bitti" str, yeşil). 3. ve 4. satırların başındaki dört boşluk dört çivit mavisi noktayla gösterilmiş; bu iki satır açık mavi ve çivit mavisi çerçeveli bir şeritte. 2. satırın sonundaki iki nokta çivit mavisi bir halkayla işaretli: iki nokta: block başlıyor. 3. ve 4. satırların sağında bir köşeli ayraç: block (4 boşluk). 5. satırın yanında: indentation yok: block'un dışında. Altta: Indentation Python'da süs değil, kuraldır. Durum colon: aynı beş satır, ama 2. satır 1.75'te biter, iki nokta yok; boş yer kırmızı kesik çizgili bir halkada, altında kırmızı bir şapka (^); üstte kırmızı: iki nokta yok; sağda kırmızı SyntaxError: expected ':' ve ondan halkaya kırmızı bir ok. Durum pycharm: aynı kod PyCharm editörü gibi, noktalar yok; 3. ve 4. satırlar seçili (açık mavi), solda bu iki satır boyunca ince gri dikey indentation çizgisi, 1 numaralı not: indentation çizgisi. Sağda iki tuş: Tab, sağa bir ok ve içeri; Shift+Tab, sola bir ok ve dışarı. Durum error: yalnızca üç satır: grade_point = 2.5, if grade_point >= 1.75: ve indentation olmadan print("geçti"); 3. satırın yanında küçük kırmızı bir işaret; iki nokta yine çivit mavisi halkada. Panelin altında kırmızı: IndentationError: expected an indented block after 'if' statement on line 2. 1 2 3 4 5 grade_point = 2.5 if grade_point >= 1.75: if grade_point >= 1.75 print("geçti") print("geçti") print("tebrikler") print("bitti") iki nokta: block başlıyor block (4 boşluk) indentation yok: block'un dışında iki nokta yok ^ SyntaxError: expected ':' 1 indentation çizgisi Tab içeri Shift+Tab dışarı IndentationError: expected an indented block after 'if' statement on line 2 Indentation Python'da süs değil, kuraldır.
if satırı iki noktayla biter.

if ve = işareti


credits = 4
if credits = 4:
    print("4 kredi")
Çıktı
  File "…/python-kurs/example.py", line 2    if credits = 4:       ^^^^^^^^^^^SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?

if'te kıyaslama == ile yapılır; tek = assignment'tır ve if satırında SyntaxError verir.

Doğrusu: if credits == 4: (:= bu kursta yok)

IndentationError

Indentation ve block Numaralı satırlarla bir kod paneli, dört durum. Durum block: 1 grade_point = 2.5, 2 if grade_point >= 1.75:, 3 print("geçti"), 4 print("tebrikler"), 5 print("bitti") (2.5 ve 1.75 float, hardal sarısı; "geçti", "tebrikler" ve "bitti" str, yeşil). 3. ve 4. satırların başındaki dört boşluk dört çivit mavisi noktayla gösterilmiş; bu iki satır açık mavi ve çivit mavisi çerçeveli bir şeritte. 2. satırın sonundaki iki nokta çivit mavisi bir halkayla işaretli: iki nokta: block başlıyor. 3. ve 4. satırların sağında bir köşeli ayraç: block (4 boşluk). 5. satırın yanında: indentation yok: block'un dışında. Altta: Indentation Python'da süs değil, kuraldır. Durum colon: aynı beş satır, ama 2. satır 1.75'te biter, iki nokta yok; boş yer kırmızı kesik çizgili bir halkada, altında kırmızı bir şapka (^); üstte kırmızı: iki nokta yok; sağda kırmızı SyntaxError: expected ':' ve ondan halkaya kırmızı bir ok. Durum pycharm: aynı kod PyCharm editörü gibi, noktalar yok; 3. ve 4. satırlar seçili (açık mavi), solda bu iki satır boyunca ince gri dikey indentation çizgisi, 1 numaralı not: indentation çizgisi. Sağda iki tuş: Tab, sağa bir ok ve içeri; Shift+Tab, sola bir ok ve dışarı. Durum error: yalnızca üç satır: grade_point = 2.5, if grade_point >= 1.75: ve indentation olmadan print("geçti"); 3. satırın yanında küçük kırmızı bir işaret; iki nokta yine çivit mavisi halkada. Panelin altında kırmızı: IndentationError: expected an indented block after 'if' statement on line 2. 1 2 3 4 5 grade_point = 2.5 if grade_point >= 1.75: if grade_point >= 1.75 print("geçti") print("geçti") print("tebrikler") print("bitti") iki nokta: block başlıyor block (4 boşluk) indentation yok: block'un dışında iki nokta yok ^ SyntaxError: expected ':' 1 indentation çizgisi Tab içeri Shift+Tab dışarı IndentationError: expected an indented block after 'if' statement on line 2 Indentation Python'da süs değil, kuraldır.
if satırından sonraki satırda indentation yoksa Python hiçbir satırı çalıştırmaz.

Nedensiz indentation

IndentationError: unexpected indent İki sütun. Solda kırmızı başlık Geçersiz: gri kod panelinde 1. satır print("A") en solda, 2. satır print("B") nedensiz dört boşluk içeride; dört boşluk çivit mavisi dört nokta olarak çizili ve kırmızı kesik çizgili bir çerçeve içinde. Altta kırmızı bir ok çerçeveyi gösterir, yanında kırmızı nedensiz indentation; en altta kırmızı IndentationError: unexpected indent. Sağda petrol mavisi başlık Geçerli: iki satır da en solda; ok Çıktı paneline gider, çıktı A ve B. Koddaki "A" ve "B" str (yeşil). Geçersiz 1 print("A") 2 print("B") nedensiz indentation IndentationError: unexpected indent Geçerli 1 print("A") 2 print("B") Çıktı A B
Nedensiz bir indentation da hatadır.

Nested if (iç içe if)


temperature = 12  # 20 olsaydı: tişört
weather = "yağmurlu"
if temperature < 15:
    if weather == "yağmurlu":
        print("şemsiye ve mont")
    else:
        print("mont")
else:
    print("tişört")
Çıktı
şemsiye ve mont

İçteki if, yalnız dıştaki şart True ise sınanır.

Her else kendi hizasındaki if'e aittir.

11. elif

Üç ve daha fazla yol arasından seçmek

elif

elif: genel biçim, örnek ve çıktı, adım adım Solda Genel biçim: if <şart>:, <block>, elif <şart>:, <block>, else:, <block>. Bir tıklamayla sağda Örnek çıkar: score = 77, if score >= 85:, print("A3 ve üstü"), elif score >= 50:, print("geçti"), else:, print("kaldı"); sayılar turuncu (int), metinler yeşil (str). Bir tıklamayla daha altında Çıktı: geçti. Genel biçim if <şart>: <block> elif <şart>: <block> else: <block> Örnek score = 77 if score >= 85: print("A3 ve üstü") elif score >= 50: print("geçti") else: print("kaldı") Çıktı geçti
elif, else if demek: üstteki şart False ise sınanır.

elif adım adım

elif'e inen puan 85'ten küçüktür: şarta alt sınır yeter.

elif sırası

elif sırası: score = 92 İki sütun, ikisi de score = 92 (turuncu, int) için izlenmiş. Başta yalnızca iki kod paneli görünür; iki panelde de iki şart satırı (score >= 50 ve score >= 90) aynı açık mavi bantta, yerleri değişmiş; ilk tıklamada soldaki akış ve çıktısı, ikinci tıklamada sağdaki akış ve çıktısı çıkar. Akışlar kodun altında: True oku baklavanın sağından çıkar, False oku aşağı iner. Solda Yanlış sıra: kod score = 92, if score >= 50: print("D"), elif score >= 90: print("A2"). score >= 50 baklavasından petrol mavisi True oku sağdaki print("D") kutusuna gider, kutu açık mavi ve çivit mavisi çerçeveli; gri False oku aşağıdaki score >= 90 baklavasına iner; o baklava ve sağındaki print("A2") gri, altında hiç sınanmadı. Kodun sağında Çıktı: D ve kırmızı çerçeveli kutuda kırmızı: ilk True kazanır: 92 için D. Sağda Doğru sıra: iki şart yer değiştirmiş; score >= 90 baklavasından True oku print("A2") kutusuna gider (vurgulu); score >= 50 baklavası ve print("D") gri, hiç sınanmadı. Çıktı: A2. Yanlış sıra score = 92 if score >= 50: print("D") elif score >= 90: print("A2") Doğru sıra score = 92 if score >= 90: print("A2") elif score >= 50: print("D") score >= 50 True print("D") False score >= 90 True print("A2") hiç sınanmadı Çıktı D ilk True kazanır: 92 için D score >= 90 True print("A2") False score >= 50 True print("D") hiç sınanmadı Çıktı A2
Sıra karar verir: ilk True olan şartın block'u çalışır.

elif yerine if


score = 92
if score >= 90:
    print("A2")
if score >= 50:  # instead of elif
    print("D")
Çıktı
A2
D
İki ayrı if: score = 70 olsaydı Soru: score = 70 olsaydı? Bir tıklamayla cevap çıkar: Çıktı panelinde yalnızca D; yanında ikinci if yine sınanır yazıyor. score = 70 olsaydı? D ikinci if yine sınanır

İkinci if her zaman sınanır; elif yalnızca üstteki şart False ise.

elif ile yalnızca A2 yazılır.

Uygulama 1

PuanHarf grubu
85-100A
70-84B
55-69C
50-54D
50'nin altıkaldı

Tabloyu if, elif, else ile yazın: 72 B'dir.

İkişerli: score = int(input()) ile 85, 84, 50, 49 girin.

Uygulama 1 çözümü

Hedef programın parçaları

Ders 2'nin hedef programı: parçalar Solda gri bir kod panelinde hedef programın satırları, atlanan yerler üç noktayla: code = input(…).strip().upper(), credits = int(input(…)), score = int(input(…)); if score >= 95: grade_point = 4.00, elif score >= 90:, üç nokta; if grade_point >= 1.75: status = "geçti", else: status = "kaldı"; iki print satırı. elif zinciri açık mavi bantta, çivit mavisi çerçeveli. Sağda dört ayraç: 2A: input() ve int(), girdiyi alır; 11. bölüm: elif zinciri, Madde 24'ün tablosu; 9. bölüm: if ve else, geçti ya da kaldı; 2A: f-string, :.2f, iki satırlık çıktı. 95 ve 90 turuncu (int), katsayılar hardal sarısı (float), "geçti" ve "kaldı" yeşil (str). İlk ayracın girdi satırının yanında bugünün resmi: 6 ve 6 tuşlarından bir ok yeşil "66" kutusuna (str) gider. code = input(…).strip().upper() credits = int(input(…)) score = int(input(…)) if score >= 95: grade_point = 4.00 elif score >= 90: … if grade_point >= 1.75: status = "geçti" else: status = "kaldı" print(f"{code}: {score} puan, katsayı …") print(f"{credits} x {grade_point:.2f} = …") 2A: input(), int() girdi 6 6 "66" 11. bölüm: elif Madde 24'ün tablosu 10. bölüm: if, else geçti ya da kaldı 2A: f-string, :.2f iki satır çıktı
Dersin başındaki program: artık her satırını okuyabilirsiniz.

Bugünün keyword'leri

Python'un keyword'leri: 2B'de öğrendiklerimiz help("keywords") çıktısı, Ders 1'deki tablonun aynısı: on satır, dört sütun. Dokuz keyword çivit mavisi bir çerçeveyle çevrili, 2B'de öğrendiklerimiz: True, False, in, and, or, not, if, else, elif. help("keywords") example.py, Run penceresi Here is a list of the Python keywords. Enter any keyword to get more help. False class global pass None continue if raise True def import return and del in try as elif is while assert else lambda with async except match yield await finally nonlocal break for not case from or
Ders 1'deki keyword listesinden dokuzunu bugün öğrendik.

Ödev 2

Son gün
1 Kasım Pazar, 23.59
Form
https://forms.gle/85GMMkxWLvinDtiW6
Repo
GitHub'da student-card-python-hw; README'de bugünün konu özeti

Ödev 2, odev2.py dosyasıdır: TODO'ları doldurup aynı dosyayı formdan yüklersiniz.

Ders sonrası videolar

Önce bunu izleyin
CS50P, Lecture 0
Daha fazlası
Corey Schafer, Strings
Daha fazlası
CS50P, Lecture 1: Conditionals
Daha fazlası
Corey Schafer, Conditionals and Booleans
Derinlemesine
Computerphile, Unicode Miracle

İsteğe bağlı; bağlantılar Ek kaynaklar sayfasında.

Haftaya

Ders programı: Ders 1 ve Ders 2 bitti, haftaya Ders 3 Beş sütunlu ders programı, soldan sağa. Sağ üstte Salı, 18.00, E4. Ders 1, 20 Ekim ve Ders 2, 27 Ekim: üstlerinde petrol mavisiyle bitti yazıyor, başlıkları gri. Ders 1: bilgisayar, print(), error messages, int (turuncu), float (hardal sarısı), variable; Ödev 1, 25 Ekim Pazar 23.59. Ders 2: str (yeşil), input(), f-string, index, slicing, bool (deniz yeşili), if / elif; Ödev 2, 1 Kasım Pazar 23.59. Ders 3, 3 Kasım (üstünde haftaya yazıyor, başlığı açık mavi ve çivit mavisi çerçeveyle vurgulu): while, for, break, continue, try / except, assert; Ödev 3, 8 Kasım Pazar 23.59. Ders 4, 10 Kasım: import, def, return, scope, None (bej), class; Ödev 4, 15 Kasım Pazar 23.59. Ders 5, 17 Kasım: list (vişneçürüğü), tuple (mavi gri), aliasing, dict (kahverengi), set (zeytin yeşili), file; Ödev 5, 22 Kasım Pazar 23.59. Salı, 18.00, E4 bitti Ders 1 20 Ekim bilgisayar print() error messages int float variable Ödev 1 25 Ekim Pazar 23.59 bitti Ders 2 27 Ekim str input() f-string index, slicing bool if / elif Ödev 2 1 Kasım Pazar 23.59 haftaya Ders 3 3 Kasım while for break continue try / except assert Ödev 3 8 Kasım Pazar 23.59 Ders 4 10 Kasım import def return scope None class Ödev 4 15 Kasım Pazar 23.59 Ders 5 17 Kasım list tuple aliasing dict set file Ödev 5 22 Kasım Pazar 23.59
Haftaya program aynı işi tekrar etmeyi öğrenecek.

Bugün neler yapabiliyorsunuz

Aynı program, iki çalıştırma Üstte: Klavyeden gelen her şey str'dir. Altında iki Run penceresi. Birincisinde Final: 95 yazılmış (95 yeşil, str rengi) ve çıktı 87.50 A3 ve üstü. İkincisinde Final: 10 yazılmış ve çıktı 45.00 kaldı. Klavyeden gelen her şey str'dir. 1. çalıştırma Final: 95 87.50 A3 ve üstü 2. çalıştırma Final: 10 45.00 kaldı

Bugün programınız ilk kez sizinle konuştu ve kendi kararını verdi.

- Klavyeden bilgi alıp sayıya çevirmek

- Metni düzeltip parçasını almak

- Çıktıyı f-string ile düzgün yazdırmak

- Programa karar verdirmek

Çalışma soruları

Dersten sonra kendi başınıza: önce soruyu çözün, tıklayınca cevap gelir.

Python ne yazdırır?


print(10 / 2, 10 // 2)
      
  1. 5.0 5
  2. 5 5
  3. 5.0 5.0
  4. 5 5.0

/ her zaman float verir; iki int'in // bölümü int'tir.

Python ne yazdırır?


print(0.5 + 0.25 == 0.75)
print(0.1 + 0.2 == 0.3)
      
  1. True True
  2. True False
  3. False False
  4. False True

Yarım ve çeyrek bilgisayarın parası, tam tutulur; 0.1 ile 0.2 tam tutulmaz.

Python ne yazdırır?


total = 0.1 + 0.2
print(round(total, 2))
print(f"{total:.2f}")
      
  1. 0.3 0.30
  2. 0.30 0.30
  3. 0.3 0.3
  4. 0.30 0.3

round() bir sayı verir, sondaki 0 yazılmaz; :.2f hep iki basamak gösterir.

Python ne yazdırır?


x = 10
y = x
x = x * 2
print(x, y)
      
  1. 20 20
  2. 10 20
  3. 20 10
  4. Hata verir

x = x * 2 yalnızca x'in okunu taşır; y hala 10'u gösterir.

Python ne yazdırır?


a = 3
b = a + 1
a = 10
print(a, b)
      
  1. 10 11
  2. 10 4
  3. 3 4
  4. 4 10

b'nin value'su 2. satırda bir kez hesaplandı; a'nın taşınması b'yi değiştirmez.

Python ne yazdırır?


year = '2026'
print(year, type(year))
      
  1. 2026 <class 'str'>
  2. '2026' <class 'str'>
  3. 2026 <class 'int'>
  4. Hata verir

Tırnaklar yazdırılmaz; tırnak içindeki 2026 bir str'dir, tek tırnakla da.

Python ne yazdırır?


print("12" + "3", 12 + 3, "ha" * 2)
      
  1. 15 15 haha
  2. 123 15 haha
  3. 123 123 haha
  4. TypeError

İki str + ile arka arkaya eklenir, iki int toplanır; * str'yi tekrarlar.

Python ne yazdırır?


print(int(7.8), round(7.8), float("5"))
      
  1. 8 8 5
  2. 7 8 5.0
  3. 7 7 5.0
  4. 7.8 8 5

int() keser, round() yuvarlar, float() float verir.

Python ne yazdırır?


points = 4 * 2.5
print(f"{points:.2f}")
print("{points}")
      
  1. 10.00 {points}
  2. 10.0 10.0
  3. 10.00 10.00
  4. 10 {points}

:.2f her zaman iki basamak gösterir; f olmadan süslü parantezler metin olarak yazılır.

Python ne yazdırır?


name = "  nur  "
name = name.strip().upper()
print(f"[{name}]")
      
  1. [NUR]
  2. [nur]
  3. [ NUR ]
  4. [ nur ]

strip() boşlukları siler, upper() büyütür; sonuç name'e atandığı için saklanır.

Python ne yazdırır?


a = "3"
b = 4
print(a * 2, b * 2)
      
  1. 6 8
  2. 33 8
  3. 33 44
  4. TypeError

"3" bir str'dir, * onu tekrarlar; 4 bir int'tir, * onu çarpar.

Python ne yazdırır?


word = "Hacettepe"
print(word[0], word[-1], len(word))
      
  1. H e 9
  2. H e 8
  3. a e 9
  4. H p 9

Index 0'dan başlar, -1 son karakterdir; len() karakterleri sayar.

Python ne yazdırır?


code = "MAT101"
print(code[2:4], code[4:])
      
  1. T1 01
  2. T10 01
  3. AT1 101
  4. AT 101

Index 0'dan başlar, bitiş dahil değildir; [4:] sona kadar gider.

Python ne yazdırır?


code = "MAT101"
print(code[0:100])
print(code[6])
      
  1. MAT101 IndexError
  2. IndexError
  3. MAT101 1
  4. MAT101 M

Slice sonda durur; index 6 yoktur, son index 5'tir.

Python ne yazdırır?


score = 105
print(score >= 0 and score <= 100)
print(score < 0 or score > 100)
print(not score > 100)
      
  1. False True False
  2. True False True
  3. False False False
  4. True True False

105 aralıkta değil, and False; 105 > 100, or True; not, True'yu False yapar.

Python ne yazdırır?


x = 7
if x > 5:
    print("A")
else:
    print("B")
print("C")
      
  1. A C
  2. A
  3. A B C
  4. B C

Tam olarak bir block çalışır; sol kenara dönen satır her zaman çalışır.

Python ne yazdırır?


score = 87
if score >= 85:
    print("A3")
elif score >= 50:
    print("geçti")
print("son")
      
  1. A3 son
  2. A3 geçti son
  3. geçti son
  4. A3

İlk True şartın block'u çalışır, gerisi atlanır; son satır zincirin dışında.