Lesson 5
Teller
1. Teller
Bir giriş, fonksiyon input()
kullanılarak standart girişten okunabilir veya tek veya çift tırnak içinde tanımlanabilir. İki dizge birleştirilebilir ve ayrıca bir dizgeyi n çarpanıyla çarparak yinelemeliyiz:
print('>_< ' * 5) # > _ <> _ <> _ <> _ <> _ <
Python'daki bir dize, bir karakter dizisidir. len(some_string)
işlevi, bir dizede kaç karakter bulunduğunu döndürür:
print(len('abcdefghijklmnopqrstuvwxyz')) # 26
Python'daki her nesne, str(some_object)
işlevi kullanılarak dizeye dönüştürülebilir. Böylece sayıları dizelere dönüştürebiliriz:
s = str(2 ** 100) print(s) # 1267650600228229401496703205376 print(len(s)) # 31
2. Dilimleri: tek karakter
Bir dilim, verilen dizgeden bir karakter veya bir parça verir: alt dizge veya alt dizidir.
Üç dilim şekli vardır. Dilimin en basit şekli: tek bir karakter dilim S[i]
verir i
dize karakter inci. 0'dan başlayarak karakterleri sayarız. Yani, eğer
,
,
,
,
,
. Python'da dizenin karakterleri için ayrı bir karakter olmadığını unutmayın. S[i]
ayrıca kaynak dizgisi gibi str
türüne de sahiptir.
S[i]
de sayı i
bir indeks olarak adlandırılır.
Negatif bir indeks belirlerseniz, -1
sayısından başlayarak sondan sayılır. Yani,
,
,
,
,
.
Bunu tabloda özetleyelim:
Teller | 'H | e | l | l | O |
---|---|---|---|---|---|
indeks | S [0] | S [1] | S [2] | S [3] | S [4] |
indeks | S [-5] | S [-4] | S [-3] | S [-2] | S [-1] |
Dilim S[i]
deki indeks len(S)
eşit veya daha büyükse veya -len(S)
den -len(S)
, aşağıdaki hataya neden IndexError: string index out of range
.
3. Dilimler: alt tabaka
Iki parametre ile dilim S[a:b]
uzunlukta sonuna kadar olan alt döner b - a
, indeks karakterle başlayan a
ve dizin karakteri kadar süren b
sonuncusu dahil değil. Örneğin, S[1:4] == 'ell'
ve S[-4:-1]
kullanarak aynı alt dizeyi alabilirsiniz. Pozitif ve negatif indeksleri aynı dilimde karıştırabilirsiniz, örneğin, S[1:-1]
dizgenin ilk ve son karakteri olmayan bir alt dizedir (dilim, dizin 1 ile karakterle başlar ve bir dizin ile biter.) -1, dahil değil).
İki parametreli dilimler asla IndexError
neden IndexError
. Örneğin, S == 'Hello'
için dilim S[1:5]
'ello'
dizgisini döndürür ve ikinci indeks S[1:100]
gibi çok büyük olsa bile sonuç aynıdır.
İkinci parametreyi atlarsanız (ancak sütunu koruyun), dilim dize sonuna gider. Örneğin, ilk karakteri dizeden kaldırmak için (dizini 0'dır) dilim S[1:]
. Benzer şekilde, ilk parametreyi atlarsanız, Python dilimi dizenin başlangıcından alır. Yani, dizeden son karakteri çıkarmak için, S[:-1]
dilimini kullanabilirsiniz S[:-1]
. Dilim S[:]
S
dizisinin kendisiyle eşleşir.
4. Dilimler: dizelerin değişmezliği
Bir dizenin herhangi bir dilimi yeni bir dize oluşturur ve orijinalini hiçbir zaman değiştirmez. Python dizgileri değişmezdir, yani nesneler olarak değiştirilemezler. Değişkeni yalnızca yeni dizeye atayabilirsiniz, ancak eski olan bellekte kalır.
Aslında Python'da değişken yoktur. Sadece herhangi bir nesne ile ilişkilendirilmiş isimler vardır. Önce bir adı bir nesne ile ilişkilendirebilir ve sonra - başka biriyle. Birkaç isim bir ve aynı nesne ile ilişkilendirilebilir.
Bunu gösterelim:
s = 'Hello' t = s # s ve t aynı dizgiyi işaret eder t = s[2:4] # şimdi t yeni dizgeye işaret ediyor 'll' print(s) # s değiştirilmez olarak 'Merhaba' yazdırır print(t) # baskı 'll'
5. Dilimler: altyazı
Üç parametre S[a:b:d]
olan bir dilim belirtirseniz, üçüncü parametre, işlev range()
aynı olan adımı belirtir. Bu durumda aşağıdaki indeksi ile sadece karakter alınır: a
a + d
, a + 2 * d
dek ve indeks ile karakteri içermeyen ve benzeri b
. Üçüncü parametre 2'ye eşitse, dilim her ikinci karakteri alır ve dilim adımı -1
eşitse, karakterler ters sırada olur. Örneğin, böyle bir dizeyi tersine çevirebilirsiniz: S[::-1]
. Örnekleri görelim:
s = 'abcdefg' print(s[1]) print(s[-1]) print(s[1:3]) print(s[1:-1]) print(s[:3]) print(s[2:]) print(s[:-1]) print(s[::2]) print(s[1::2]) print(s[::-1])
range()
üçüncü parametresine nasıl benzediğini not alın range()
:s = 'abcdefghijklm' print(s[0:10:2]) for i in range(0, 10, 2): print(i, s[i])
6. Dizi yöntemleri: find () ve rfind ()
Bir yöntem, nesneye bağlı bir işlevdir. Yöntem çağrıldığında, yöntem nesneye uygulanır ve bununla ilgili bazı hesaplamalar yapar. Yöntemler object_name.method_name(arguments)
olarak çağrılır. Örneğin, s.find("e")
, string yöntemi find()
, "e"
tek argümanı ile s
dizisine uygulanır.
Yöntem find()
, çağrıldığı dizenin içinde argüman olarak iletilen bir alt dizeyi arar. İşlev, alt dizenin ilk oluşumunun dizinini döndürür. Alt tabaka bulunamazsa, yöntem -1 değerini döndürür.
s = 'Hello' print(s.find('e')) # 1 print(s.find('ll')) # 2 print(s.find('L')) # -1
Benzer şekilde, rfind()
yöntemi, alt dizenin son oluşumunun dizinini döndürür.
s = 'abracadabra' print(s.find('b')) # 1 print(s.rfind('b')) # 8
Üç argüman olan find()
s.find(substring, left, right)
, arama, s[left:right]
s.find(substring, left, right)
içinde gerçekleştirilir s[left:right]
. Eğer s.find(substring, left)
gibi sadece iki argüman belirtirseniz, arama s[left:]
dilimi s[left:]
, yani dizgenin left
dizinin left
karakterle başlayarak gerçekleştirilir. Metot s.find(substring, left, right)
mutlak indeksi, tüm string s
göreli olarak değil, dilime döndürür.
s = 'my name is bond, james bond, okay?' print(s.find('bond')) # 11 print(s.find('bond', 12)) # 23
7. Dize yöntemleri: replace ()
Yöntem replace()
, belirli bir alt dizenin tüm yinelemelerini diğeriyle değiştirir. Sözdizimi: s.replace(old, new)
, S
dizesini alır ve alt dizgenin new
olan tüm old
yinelemelerini yenisiyle değiştirir. Örnek:
print('a bar is a bar, essentially'.replace('bar', 'pub')) # 'Bir pub aslında bir bardır'
Üçüncü argüman count
şöyle s.replace(old, new, count)
: s.replace(old, new, count)
. Sadece ilk count
oluşumlarını değiştirmek ve sonra durdurmak için replace()
yapar.
print('a bar is a bar, essentially'.replace('bar', 'pub', 1)) # 'Bir bar aslında bar'
8. Dize yöntemleri: count ()
Bu yöntem, bir dizenin başka bir dizenin içindeki sayısını gösterir. En basit form şudur: s.count(substring)
. Sadece örtüşmeyen olaylar dikkate alınır:
print('Abracadabra'.count('a')) # 4 print(('aaaaaaaaaa').count('aa')) # 5
Eğer
olmak üzere üç parametre
, sayım s[left:right]
dilimi içerisinde yapılır s[left:right]
.