Alıştırma - Sayılar ekleme

Tamamlandı

Bu alıştırmada programınızdaki değerler, veri türleri ve bir veri türündeki değeri başka bir veri türüne dönüştürme hakkında bilgi edineceksiniz.

Toplama işlemi yapan bir program oluşturma

Önceki alıştırmalarda sunulan tekniklere benzer teknikleri kullanarak kullanıcıdan iki değer isteyen, bunları toplayan ve sonuçları gösteren yen bir program oluşturacaksınız. Bu sırada, Python’un nasıl çalıştığına dair size daha derin içgörüler sağlayacak yeni sorunlar ve çözümlerle karşılaşacaksınız.

1. Adım: Yeni bir .py kod dosyası oluşturma

Sonraki alıştırma için yeni bir dosya oluşturalım. Öğrendiğin tekniği kullanarak yeni bir dosya oluşturun ve dosyayı numbers.py.

Not

Visual Studio Code’da dosya oluşturmak için Dosya > Yeni Dosya’yı seçip bu dosyayı adlandırmak için Dosya > Farklı Kaydet’i seçebileceğinizi hatırlayın.

2. Adım: Yeni dosyanıza kod ekleme

Yeni numbers.py dosyasında aşağıdaki kodu yazın:

print("First Number:")
first_number = input()
print("Second Number:")
second_number = input()
sum = first_number + second_number
print(sum)

Genellikle, bu kod örneği önceki alıştırmalarda kendi özel durumla neredeyse aynıdır. Ancak, bu kod satırında biraz daha farklı bir şey yaptınız:

sum = first_number + second_number

Burada, programda daha sonra kullanacağınız hesaplanmış bir değeri tutmak için bir geçici değişken sum tanıtırsınız. Başka bir deyişle, son kod satırını şu şekilde yazmış olabilirdiniz:

print(first_number + second_number)

Yukarıdaki gibi bu sorunu çözmeyi tercih ettiy olsaydı, değişkenini tanıtmaya gerek sum olmazdı.

O halde neden sum değişkenini oluşturdunuz?

Bazen geçici bir değişken, kodunuzun daha kolay okunmasını sağlayabilir. Bu durumda, bu alıştırmanın ilerleyen dakikalarında kodun son satırı daha karmaşık hale gelecektir ve ekleme, birleştirilebilirlik ve yazdırmayı tek bir kod satırına yazdırmayı ortadan kaldırmak için bu satırı daha kısa ve yönetilebilir hale gelecektir.

Bu bir karardır ve bir geliştirici olarak kod yazmaya devam ettikçe sizin için okunabilir görünen bir stil ve kişisel tercihler geliştirebilirsiniz.

Python topluluğu yalnızca kodunuzun gelecekte siz veya kodunuzu okuyacak kişiler için okunabilir olması açısından bunu önerir. Python geliştirici topluluğunda sık ifadelerden biri, "Kodunuzu bir kez yazacak ama birçok kez okuyacak, dolayısıyla okunabilirlik için en iyi duruma getirmenizdir."

Değişkenleri adlandırma

Değişkenleri dilediğiniz şekilde adlandırabilirsiniz, ancak değişkenin işaret ettiği verileri tanımlayan bir ad seçmek iyi bir uygulamadır. Doğru adı seçmek her zaman kolay değildir, ancak harcadığınız süreye değecek bir iştir. İdealde ad mümkün olduğunca kısa ve açıklayıcı olmalıdır. Genelde bunu bir veya iki sözcükle elde edebilirsiniz.

İpucu

Python en iyi uygulamalarından biri, değişken adlarının tamamında küçük harf kullanmaktır. Değişkenin amacını yeterli bir şekilde tanımlamak için birden fazla sözcüğe ihtiyaç duyarsanız sözcükleri bir alt çizgi (_) karakteriyle ayırın.

3. Adım - Kodu kaydetme ve yürütme

Daha önce öğrendiğiniz tekniklerden birini kullanarak programı kaydedip çalıştırın. Aşağıdaki çıkışı görmeniz gerekir:

First Number:
5
Second Number:
4
54

Yukarıdaki çıkış istenen çıkış değildir. Programınızın bir toplam oluşturmak için iki sayıyı eklemesini istiyorsunuz, ancak programınız bunun yerine iki dizeyi birleştirmiş gibi görünüyor.

4. Adım - Sorunu tanımlama

Sorun, input() işlevinin sayı değil, dize olarak temsil edilen verileri döndürmesidir.

Python’da, programlarınızdaki her değer hangi veri türü olduğunu ve bununla neler yapabileceğinizi açıklayan ilişkili bir veri türüne sahiptir. Başka bir deyişle, iki değeriniz dize olduğundan, bunlar yalnızca birleştirilebilir.

İki değer üzerinde bir matematik işlemi yapmak istiyorsanız her ikisi de sayısal veri türü olmalıdır.

Dize değerini tamsayı değerine nasıl dönüştürürsünüz ve bu neden gereklidir?

Veri türü nedir?

Veri türleri tüm programlama dillerinde bulunur. Çoğu programlama dilinde, farklı veri türlerini ve veri üzerinde yapmak istediğiniz işlem türlerini temsil eden pek çok farklı veri türü vardır. Python’da dize, tamsayı ve kayan (kesir içeren sayısal verileri temsil edebilen) gibi her iki basit veri türü ve veri koleksiyonları ile daha fazlasını temsil eden karmaşık veri türleri bulunur.

Her veri türü, programcıların kariyerleri boyunca bir noktada ihtiyaç duyacakları bir boşluğu doldurmak için vardır. Bazı veri türlerini daha sık bazılarını (birden fazlaysa) ise daha az sık kullanırsınız.

Programınızda çalıştığınız değerler doğru veri türünde değilse yerleşik işlevleri kullanarak bu değerleri istediğiniz veri türüne dönüştürebilirsiniz. Bu senaryoda, bir dizeyi tamsayıya (tam) dönüştürmek için int() işlevini kullanacaksınız. Değer doğru veri türündeyse dilediğiniz gibi kullanabilirsiniz. Örneğin, dize verisini tam sayı verisine dönüştürdükten sonra veriler üzerinde ekleme işlemi yapabilirsiniz.

4. Adım: Girişi tamsayılara dönüştürmek için kodu düzenleme

Kodunuzu, aşağıdaki kod örneğiyle eşleşecek şekilde güncelleştirin:

print("First Number:")
first_number = int(input())
print("Second Number:")
second_number = int(input())
sum = first_number + second_number
print(sum)

Bu kod örneğindeki önemli farka dikkat edin. Burada, input() işlevine yapılan çağrıyı int() işlevine yapılan çağrıyla sarmalıyorsunuz. Başka bir deyişle, Python yorumlayıcısı önce input() işlevini yürütüyor, input() işlevinden kullanıcı girişini içeren değer döndürüldükten sonra int() işlevine giriş parametresi olarak geçiriliyor, bu da değeri dizeden tamsayıya dönüştürüyor.

İpucu

print() yöntemi esnektir. string, int ve float veri türlerine ek olarak henüz incelemediğimiz birçok farklı veri türünü görüntüleyebilir.

6. Adım: Kodu kaydetme ve yürütme

Daha önce öğrendiğiniz tekniklerden birini kullanarak programı kaydedip çalıştırın. Aşağıdaki çıkışı görmeniz gerekir:

First Number:
5
Second Number:
4
9

Başarılı!

Ancak programı yeniden çalıştırıp sayısal olmayan değerler sağlarsanız ne olur? Başka bir deyişle, istendiğinde iki sayı yerine adınızı ve soyadınızı girerseniz ne olur?

First Number:
bob
Traceback (most recent call last):
  File "c:/python/hello/stuff.py", line 8, in <module>
    first_number = int(input())
ValueError: invalid literal for int() with base 10: 'bob'

Burada, programı yeniden çalıştırdığınızda sayı yerine adınızı (bob) girdiniz. Enter’ı seçtiğinizde program çalışma zamanı hatasıyla karşılaşır ve kapanır. Programı son kullanıcılara dağıtmadan önce, programınızı çalıştırmayı denediğinizde Python derleyicisinin yakalayıp çözebileceği derleme zamanı hatasının aksine çalışma zamanı hatası, kullanıcılar programı kullanırken kendilerinden kaynaklanmayan bir hatayla karşılaştıklarında oluşur.

İdealde veri dönüştürme işlemi yapmadan önce, kullanıcıların girdiği değerlerin sayıya dönüştürülüp dönüştürülemeyeceğinden emin olmak amacıyla bir denetim yapmanız iyi olabilir. Kullanıcılar sayı girmediyse bu girişleri yoksayıp yeniden sayı girmelerini isteyebilirsiniz. Şimdilik programınız ile ilgili olası bir sorun olduğunu kabul etmek gerekir. Python hakkında daha fazla bilgi edindikten sonra bu sorunu ele alabilirsiniz.

7. Adım: Toplam değerinin önünde bir etiket görüntülemek için kodu düzeltme

Sonraki görev, 9 sayısının neyi temsil ettiğini netleştirmek için içeriğin son satırını biçimlendirmektir. İdealde, bu sayının önüne Sum: gibi bir etiket eklersiniz.

Kodun son satırını aşağıdaki kod örneğiyle eşleşecek şekilde güncelleştirin:

print("Sum: " + sum)

Bu kodun işe çalışacak mı? Neden yarar veya yaramaz?

8. Adım: Kodu kaydetme ve yürütme

Daha önce öğrendiğiniz tekniklerden birini kullanarak programı kaydedip çalıştırın. Aşağıdaki çıkışı görmeniz gerekir:

First Number:
5
Second Number:
4
Traceback (most recent call last):
  File "c:/python/hello/numbers.py", line 11, in <module>
    print("Sum: " + first_number + second_number)
TypeError: can only concatenate str (not "int") to str

Sorun, bir dizeyi int ile birleştirmekle ilgili gibi görünüyor.

Bu kodun çalışmamasının nedeni, Python’un first_number değerinizi dizeye örtük olarak dönüştürememesidir. Değişmez dizeye bakıp + işaretini görür ve birleştirme yapabilmek için başka bir türde değer bekler. Bir tamsayı ile karşılaştığında hata bildirir.

Bunu düzeltmek için önce ekleme işlemi yapmanız, toplamı tamsayıdan dizeye dönüştürmeniz ve sonra birleştirme işlemi yapmanız gerekir.

9. Adım: Tamsayıyı dizeye dönüştürecek şekilde kodu düzeltme

Sorunu çözmek için, kodun son satırını aşağıdaki kod örneğiyle eşleşecek şekilde değiştirin:

print("Sum: " + str(sum))

Burada, toplam değişkeninin değerini dizeye dönüştürmek için str() işlevini kullanıyorsunuz. Ardından, toplam doğru bir şekilde biçimlendirildiğinden, dize birleştirme işlemini yapabilirsiniz.

10. Adım: Kodu kaydetme ve yürütme

Daha önce öğrendiğiniz tekniklerden birini kullanarak programı kaydedip çalıştırın. Aşağıdaki çıkışı görmeniz gerekir:

First Number:
5
Second Number:
4
Sum: 9

Başarılı!

Özet

  • Kodunuzun okunabilirliğini artıran değişken adları seçin.
  • Kodunuzun okunabilirliğini artırmaya yardımcı oluyorsa geçici değişkenleri uygulamayı tercih edin. Kendi muhakemenizden yararlanın ve okunabilirlik için en uygun duruma getirin.
  • Veriler üzerinde matematik işlemleri yapmak için öncelikle verilerin sayısal veri türüne dönüştürülmesi gerekir. Bir tam sayıyı temsil eden dize değeriniz varsa ve matematik işlemi yapmak istiyorsanız değeri tamsayıya dönüştürmek için int() işlevini kullanabilirsiniz.
  • Dizeyi tamsayıya dönüştürmek için int() kullanmayı denerseniz ve dize ad gibi bir türe dönüştürülemeyen bir değer ise son kullanıcı çalışma zamanı hatasıyla karşılaşır. Çalışma zamanı hataları, programcı verilerle ilgili sorunları veya diğer olası mantık sorunlarını önceden sezmediği zaman oluşur.
  • Sayısal bir veri türü ile birlikte kullanıldığında artı işareti (+) simgesi toplama işlemi yapar.
  • Bir işlevi çağırıp döndürdüğü değeri başka bir işleve geçirebilirsiniz.
  • Sayısal bir değeri dizeye dönüştürmek için str() işlevini kullanın.