Coding for KidsCoding for Kids
Yaratıcı SeviyelerZorluklarÖğretmen Kılavuzu
Özellikler için oy verin
Gelişmiş Python Geliştirme Kursu
Bölüm
>
Seviye

Dize ve Zaman Modülleri
String Modülü

Amaç

Uygulama verilerini topla ve string modülünü kullanarak yanıt mektuplarını gönder.

Yeni çiftlik yapımı için malzemeler hesaplandıktan sonra, çiftlik için yeni personel adaylarına geçme zamanı geldi. İş başvuruları için gönderilmesi gereken birkaç mektubumuz var; elbette bu, çok yazı yazmayı gerektirecektir, ancak string modülünü kullanarak bunun yerine şablonlar oluşturup metni biçimlendirerek metin bloklarını daha kolay yönetmemizi sağlayabiliriz.

Bu sefer string modülünü içe aktarırken, diğer modüllerden farklı olarak, modülü genişleten sınıfları içe aktaracağız ve bunlar aşağıdaki şekilde çalıştırılacaktır:

import string from string import Template from string import Formatter

Bu, bize modülün kendisine ek olarak, kendi fonksiyonlarına sahip şablon ve biçimlendirme sınıflarına erişim sağlar. Amacımız için aşağıdaki fonksiyon ve sınıfları kullanacağız:

  • string.capwords(): Bu fonksiyon, string içindeki kelimelerin doğru şekilde büyük harf kullanımıyla yazılmasını sağlar; yani, bir kelimenin ilk harfi büyük, geri kalanı küçük hale gelir, string nasıl biçimlendirilmiş olursa olsun.
  • Template(): Bu bir string sınıfıdır; bir şablon nesnesi oluşturmak için kullanılır. $ işareti kullanarak verilerin değiştirileceği bir yeri işaretlemek için substitute() fonksiyonunu kullanır. Bu, istediğiniz zaman kullanabileceğiniz modüler stringler oluşturmanıza olanak tanır.
  • Formatter(): Bu da bir string sınıfıdır; bir stringi biçimlendirmek veya oluşturmak için kullanılır. Template() sınıfına benzer şekilde çalışır, ancak daha sağlamdır ve daha uzun string dizileri için daha iyidir. String verileri yerleştirmek için {} kullanılan format() fonksiyonunu kullanır.

Işığı simgeleyen X işaretine doğru yürüyerek ve dosya dolabına bakarken read() fonksiyonunu kullanarak, çeşitli başvuran isimleri içeren klasörlere erişebilirsiniz. Bu klasörler; folder_a, folder_b ve folder_c adında üç (3) liste sabiti olarak mevcuttur.

Yeşil halı üzerindeki koyu X işaretine doğru yürüyün ve masaya bakın. names_a, names_b ve names_c adında üç (3) liste oluşturun. İsimlerin doğru biçimde büyük harfle yazılması için string.capwords() fonksiyonunu kullanarak liste kavramaları oluşturun. Listeleri, isimlerinde aynı harfi barındıran sabitlerle eşleştirin; örneğin, names_a için folder_a kullanılarak şu şekilde uygulanır: names_a = [string.capwords(x) for x in folder_a]. Aynı formülü names_b ve names_c listeleri için de kullanın.

all_names adında bir liste oluşturun ve üç (3) isim listesini şu şekilde birleştirin: all_names = names_a + names_b + names_c. Bu, tüm listeleri tek bir büyük liste halinde birleştirecektir. Ardından, tüm liste elemanlarını bir string'e dönüştürmek için Python fonksiyonu join()u kullanın. Her liste elemanının arasında konulacak metni tırnak içinde belirtebilirsiniz, örneğin: all_names = ", ".join(all_templates). Doğru büyük harflendirilmiş tüm isimleri listelemek için önceden yazılmış write() fonksiyonu ile all_names listesini kullanın.

Sonrasında, altın X işaretine doğru yürüyün ve masaya bakın; burada şablonları oluşturacağız. Burada, red_templates ve blue_templates adında iki önceden yazılmış şablon nesnemiz olacak:

red_template = Template( "Hello, $name , thank you for applying for this position.") blue_template = Template( "Esteemed , $name , your application has been approved.")

Bu şablonların her birinin benzersiz bir mesajı vardır, ancak hepsinde ortak olan, $name adında bir yer tutucunun bulunmasıdır. $ sembolü, istediğiniz bir stringle değiştirilebilecek bir yer tutucu belirtmek için kullanılır; bu durumda belirtilen isim kullanılacaktır. Eğer hiçbir değerle değiştirilmezse, şablon stringin içindeki yer tutucuyu kullanacaktır. Bunu tamamlamak için, all_templates adında bir liste oluşturun.

Dört (4) döngü turu içeren bir for döngüsü oluşturun; böylece üç (3) isim listesindeki isimlerin şablonlarla değiştirilmesi sağlanacaktır. Örneğin, names_a listesine red_template uygulanacaktır. Şablondaki $name yer tutucusunu listedeki isimlerle değiştirmek için Template() sınıfındaki substitute() fonksiyonunu kullanın.

for x in range(4): names_a[x] = red_template.substitute(name=names_a[x])

Aynı işlemi names_b ve names_c için de uygulayın; names_b için red_template ve names_c için blue_template kullanın.

Tüm isim listeleri yeni şablonlarla güncellendikten sonra, bunları gözden geçirmenin zamanı gelmiştir. all_templates adında yeni bir liste oluşturun ve isim listelerini şu şekilde birleştirin: all_templates = names_a + names_b + names_c. Daha önceki gibi, tüm şablonlu isimleri okunabilir forma getirmek için join() fonksiyonunu kullanın, örneğin: all_templates = "\n".join(all_templates). Farklı isimler için tüm başlıkları listelemek adına write() fonksiyonunu all_templates ile kullanın.

Sonraki adımda, kırmızı halı üzerindeki koyu X işaretine doğru yürüyün ve masaya bakın; burada ilk mektup setini biçimlendirip yazacağız. Öncelikle, Formatter() sınıfı kullanılarak red_1 ve red_2 adında iki (2) biçimlendirme nesnesi oluşturun, örneğin: red_1 = Formatter(), red_2 = Formatter(). Mektupların düzenlenmesi için red_letters adında bir liste oluşturun.

Önceki adımlara benzer şekilde, dört (4) döngü turu bulunan bir for döngüsü oluşturacağız. İki set önceden yazılmış string, format() fonksiyonunu kullanarak biçimlendirilecek ve isim değişkenleri eklenecektir. Bu biçimlendirilmiş stringler, gönderilecek mektupların kapsamlı listesini oluşturacak şekilde red_letters listesine eklenecektir. Örneğin, red_1 biçimlendirme nesnesi names_a listesi ile biçimlendirilecek ve red_letters listesine eklenecektir.

for x in range(4): red_letters.append(red_1.format( "{} Orientation will begin next week, please report to the office..." , names_a[x]))

Aynı işlemi, red_2 biçimlendirme nesnesi için de onun önceden yazılmış stringi kullanarak ve names_b listesiyle tekrarlayın. Tüm bu ayarlamalardan sonra, join() fonksiyonunu kullanarak red_letters listesindeki verileri tek bir dosyada birleştirin, örneğin: red_letters = "\n".join(red_letters). Gönderilecek biçimlendirilmiş mektupları listelemek için write() fonksiyonunu red_letters ile kullanın.

Son olarak, mavi halı üzerindeki koyu X işaretine doğru yürüyün ve masaya bakın; burada son mektup setini biçimlendirip oluşturacağız. Önceki adımlarda olduğu gibi, blue_1 ve blue_2 adında iki (2) biçimlendirme nesnesi oluşturun, örneğin: blue_1 = Formatter(), blue_2 = Formatter(). Tüm mektupları biçimlendirip oluşturmak için blue_letters adında bir liste oluşturun.

Yine dört (4) döngü turu bulunan bir for döngüsü oluşturun ve önceden yazılmış stringleri kullanarak isim listelerini biçimlendirip blue_letters listesine ekleyin; bu sefer, blue_1 biçimlendirme nesnelerini names_c listesi ile, blue_2 biçimlendirme nesnelerini ise names_b listesi ile eşleştirin. Bu, kırmızı halıdaki yönteme benzer şekilde fakat farklı değerler kullanılarak yapılır ve biçimlerin ile şablonların ne kadar esnek olduğunu gösterir. İşlemler tamamlandıktan sonra, son mektupları dosyalamak ve seviyeyi tamamlamak için write() fonksiyonunu blue_letters ile kullanın.

Kod Kitabı