0
user Programlama Akademi
01-01-2025 7:30 PM
Python

Sayılarla Çalışmak İçin Yerleşik Python 3 Fonksiyonları

Giriş

Python 3, üzerinde çalıştığınız herhangi bir programda kullanabileceğiniz birçok yerleşik fonksiyon ile birlikte gelir. Bazı fonksiyonlar veri tiplerini dönüştürmenizi sağlarken, diğerleri belirli bir veri tipine, örneğin string'lere özeldir.

Bu eğitim, Python 3'te sayısal veri tipleriyle kullanılabilecek birkaç yerleşik fonksiyonu inceleyecektir. Aşağıdaki fonksiyonları ele alacağız:

  • abs(): Mutlak değer için
  • divmod(): Aynı anda bölüm ve kalan bulmak için
  • pow(): Bir sayıyı belirli bir kuvvete yükseltmek için
  • round(): Bir sayıyı belirli bir ondalık noktaya yuvarlamak için
  • sum(): Bir iterable veri tipindeki öğelerin toplamını hesaplamak için

Bu yöntemlere aşina olmak, programlama sırasında daha esnek olmanızı sağlayarak hangi operatörleri ve fonksiyonları kullanmanız gerektiğine dair bilinçli kararlar vermenizi sağlar. Bu eğitim boyunca bu fonksiyonları örneklerle inceleyeceğiz.


Mutlak Değer

Yerleşik abs() fonksiyonu, ona verdiğiniz sayının mutlak değerini döndürecektir. Matematikte, mutlak değer bir sayının sayı doğrusunda 0'dan ne kadar uzakta olduğunu ifade eder. Mutlak değer, sayının sıfırdan hangi yönde olduğunu dikkate almaz, yani negatif sayılar pozitif sayılar olarak gösterilir.

Örneğin, 15'in mutlak değeri 15, -74'ün mutlak değeri 74, ve 0'ın mutlak değeri 0'dır.

Mutlak değer, kalkülüs ve reel analiz için önemli bir kavramdır, ancak günlük durumlarda da anlamlıdır, örneğin katedilen mesafe gibi. Örneğin, 58 mil uzaklıkta bir yere gitmeye çalışıyorsak ancak 93 mil yolculuk yaptıysak, hedefi kaçırmış oluruz. Kaç mil daha gitmemiz gerektiğini hesaplamaya çalıştığımızda, negatif bir sayı elde ederiz ancak negatif mil yolculuk yapamayız.

Bu sorunu çözmek için abs() fonksiyonunu kullanalım:

Bilgi: Bu eğitici örnek kod ile devam etmek için, yerel sisteminizde python3 komutunu çalıştırarak bir Python interaktif kabuğu açın. Ardından, örnekleri >>> isteminden sonra ekleyebilir, kopyalayabilir veya düzenleyebilirsiniz.

miles_from_origin = 58  # Hedefin başlangıç noktasından uzaklığı (mil)
miles_travelled = 93       # Hedefe kadar kat edilen yol (mil)

# Hedefin mevcut konumdan kaç mil uzakta olduğunu hesaplayın:
miles_to_go = miles_from_origin - miles_travelled    

print(miles_to_go)                         # Kalan mil sayısını yazdırın (negatif bir sayı)
print(abs(miles_to_go))  # Negatif sayıyı dikkate alarak mutlak değer kullanın
çıktı
 -35
35

Çıktıda, abs() fonksiyonunu kullanmazsak negatif bir sayı elde ediyoruz: -35. Ancak, abs() fonksiyonunu kullanarak negatif bir sayı ihtimalini hesaba katarak pozitif bir sonuç döndürebiliriz.

Negatif bir sayıyla abs() kullanıldığında, mutlak değer her zaman pozitif bir sayı olarak dönecektir.

Şimdi, abs() fonksiyonunu pozitif bir sayı ve sıfır ile kullanalım:

print(abs(89.9))
print(abs(0))
Çıktı
89.9
0

Genellikle, yalnızca pozitif bir sayıya ihtiyacımız olduğunda ve pozitif veya negatif bir sonuç beklenebilecek bir durumda abs() fonksiyonunu kullanırız. pozitif bir sayıya döndürülen değeri değiştirmek için abs()'ı kullanacağız.

Bölüm ve Kalanı Tek Fonksiyonla Bulma

Zemin bölme (bölüm döndüren) ve modül bölme (kalan döndüren) birbirine çok yakından bağlı olduğundan, her iki işlemi bir arada gerçekleştiren bir fonksiyon kullanmak faydalı olabilir.

Python yerleşik divmod() fonksiyonu bu iki işlemi birleştirir ve önce zemin bölmeden gelen bölümü, ardından kalanı döndürür.

divmod() iki sayıyla çalışacağından, bu fonksiyona iki sayı iletmemiz gerekir:

divmod(a, b)

Bu fonksiyonla aslında şu işlemleri gerçekleştiriyoruz:

a // b
a & b

Diyelim ki 80.000 kelimelik bir kitap yazdık. Yayıncımızla, sayfa başına 300 veya 250 kelimelik seçeneklerimiz var ve her durumda kaç sayfa olacağını görmek istiyoruz. divmod() ile kaç sayfaya sahip olacağımızı ve fazladan bir sayfada taşacak kaç kelime olduğunu hemen görebiliriz.

words_per_page.py

words = 80000        # Kitabımızdaki kelime sayısı
per_page_A = 300     # Seçenek A, sayfa başına 300 kelime
per_page_B = 250     # Seçenek B, sayfa başına 250 kelime

print(divmod(words, per_page_A))  # Seçenek A'yı hesapla
print(divmod(words, per_page_B))  # Seçenek B'yi hesapla
Çıktı
(266, 200)
(320, 0)

Seçenek A'da 266 sayfa dolacak ve 200 kelime fazladan kalacak (toplamda (⅔ sayfa) 267 sayfa, Seçenek B'de ise tam olarak 320 sayfa olacak. Çevreye duyarlı olmak istiyorsak A seçeneğini seçebiliriz, ancak daha büyük boyutlu bir kitapla daha etkileyici görünmek istiyorsak B seçeneğini seçebiliriz.

divmod() fonksiyonu hem tam sayılar hem de ondalıklı sayılarla çalışabilir. Şimdi, ondalıklı bir örnek üzerinden gidelim:

a = 985.5
b = 115.25

print(divmod(a, b))
Çıktı
(8.0, 63.5)

Bu örnekte, 985.5'i 115.25'e böldüğümüzde zemin bölüm 8.0 ve kalan 63.5 olarak döner.

Ayrıca, divmod() fonksiyonunun yaptığı işlemleri // ve % operatörleri ile doğrulayabilirsiniz:

print(a//b)
print(a%b)
Çıktı
8.0
63.5

Python'da divmod() fonksiyonunu kullandığımızda hem bölme işleminin kaç kez gerçekleştiğini hem de kalanı döndürürüz.

Üs Alma

Python'da bir sayıyı üsse yükseltmek için ** operatörünü veya iki sayıyı alan yerleşik pow() fonksiyonunu kullanabilirsiniz.

Örneğin, bakteriler üzerinde araştırma yapıyorsanız ve her saat iki katına çıkan bakterilerin bir gün sonunda ne kadar olacağını görmek istiyorsanız, pow() fonksiyonunu kullanarak bunu hesaplayabilirsiniz:

bacteria.py

hours = 24
total_bacteria = pow(2, hours)

print(total_bacteria)
Çıktı
16777216

Bu örnekte, 24 saat sonunda yaklaşık 16 milyon bakterimiz olacağını hesapladık.

Üs alma işlemi matematikte şöyle yazılır:

3³

Tamamladığımız hesaplama 3 x 3 x 3'tür, bu da 27'ye eşittir.

Python'da 3³'ü hesaplamak için pow(3,3) yazmalıyız.

Yerleşik pow() fonksiyonu, hem tam sayılar hem de ondalıklı sayılar ile çalışabilir ve sayıları belirli bir kuvvete yükseltmek istediğinizde ** operatörüne bir alternatif sağlar.

Sayıları Yuvarlama

Birçok ondalık basamağa sahip ondalıklı sayılarla çalışırken sayıları hızlı ve doğru bir şekilde yuvarlamak önem kazanır. Yerleşik Python round() fonksiyonu, bir sayıyı yuvarlamak ve ondalık basamak sayısını belirlemek için iki sayıyı alır.

10'dan fazla ondalık basamağa sahip bir kayan noktalı sayıyı almak için fonksiyonu kullanacağız ve ondalık basamak sayısını 4'e düşürmek için round() fonksiyonunu kullanacağız:

i = 17.34989436516001
print(round(i,4))
Çıktı
17.3499

Yukarıdaki örnekte, ondalık basamak sayısının 4 ile sınırlandırılması gerektiğini belirttiğimiz için 17.34989436516001 numaralı float değeri 17.3499'a yuvarlanmıştır.

Ayrıca round() fonksiyonunun sayıları yukarı doğru yuvarladığını unutmayın, bu nedenle çıktı olarak 17.3498 sağlamak yerine, ondalık sayı 8'den sonra gelen sayı 9 olduğu için 17.3499 sağlamıştır. 5 veya daha büyük sayının takip ettiği herhangi bir sayı bir sonraki tam sayıya yuvarlanacaktır.

round() için sözdizimini parçalayalım:

round(sayı, ondalık basamak sayısı)

Günlük hayatta, özellikle parayla çalışırken sayıları yuvarlamak sıklıkla gerçekleşir; bir kuruşu birkaç arkadaş arasında eşit olarak bölüştüremeyiz.

Bahşiş hesaplayabilen bir program örneğine bakalım. Burada rakamlar vereceğiz, ancak bunun yerine kullanıcı tarafından sağlanan sayıları getirecek şekilde programı yeniden yazabiliriz. Bu örnekte, 3 arkadaş 87,93 dolarlık bir hesabı eşit olarak bölmek ve buna %20 bahşiş eklemek isteyen bir restorana gittiler.

bill_split.py

bill = 87.93                                       # Toplam hesap
tip = 0.2                                                    # 20% bahşiş
split = 3                                                    # Hesabı paylaşan kişi sayısı

total = bill + (bill * tip)     # Toplam hesabı hesapla

each_pay = total / split        # Herkesin ödeyeceği miktarı hesapla

print(each_pay)                      # Yuvarlamadan önce miktar

print(round(each_pay, 2))       # Yuvarlayarak miktar
Çıktı
35.172000000000004
35.17

Bu programda, toplam hesap ile bahşişi ekledikten ve bunu 3'e böldükten sonra çıkan değerin çok fazla ondalık basamağa sahip olduğunu görüyoruz: 35.172000000000004. Bu sayı, parasal bir değer olarak mantıklı olmadığından, round() fonksiyonunu kullanarak ondalık basamakları 2 ile sınırlandırıyoruz, böylece arkadaşların rahatça çalışabileceği bir sonuç elde edebiliyoruz: 35.17.

Eğer yuvarlamayı yalnızca 0 ondalık basamak ile yapmak isterseniz, round() fonksiyonunun ikinci parametresi olarak 0 kullanabilirsiniz:

round(345.9874590348545304636,0)

Bu işlem 346.0 sonucunu döndürecektir.

Ayrıca, kullanıcıdan tam sayı alırsanız, bu tam sayıyı round() fonksiyonuna geçirebilirsiniz ve herhangi bir hata almazsınız. Bir tam sayı ilk parametre olarak geçirildiğinde, tam sayı olarak bir sonuç döndürülecektir.

Toplam Hesaplama

sum() fonksiyonu, liste, demet ve sözlük gibi sayısal birleşik veri türlerinin toplamını hesaplamak için kullanılır.

Bir listeyi sum() fonksiyonuna ileterek, listedeki tüm öğeleri soldan sağa sırayla toplayabiliriz:

some_floats = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9]
print(sum(some_floats))
Çıktı
49.5

Bu, demetler ve sözlüklerle de benzer şekilde çalışacaktır:

print(sum((8, 16, 64, 512)))    # Demetteki sayıların toplamını hesapla
print(sum({-10: 'x', -20: 'y', -30: 'z'}))    # Sözlükteki sayıların toplamını hesapla
Çıktı
600    # Demetteki sayıların toplamı
-60    # Sözlükteki sayıların toplamı

sum() fonksiyonu en fazla 2 argüman alabilir, bu nedenle bir tamsayı veya ondalıklı sayı şeklinde ek bir sayı ekleyebilir ve bu sayıyı ilk pozisyondaki argümanı oluşturan sayılara ekleyebilirsiniz:

some_floats = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9]

print(sum(some_floats, 0.5))
print(sum({-10: 'x', -20: 'y', -30: 'z'}, 60))
Çıktı
50.0
0

İkinci bir argüman içermediğinizde, sum() fonksiyonu varsayılan olarak sıfır ile toplamaya başlar.

Sonuç

Bu öğreticide, Python programlama dilinde sayısal veri türleri ile kullanabileceğiniz bazı yerleşik yöntemleri inceledik.


Lisa Tagliaferri tarafından yazılan Built-in Python 3 Functions for Working with Numbers a Programming makalesinin düzenlenmiş çevirisi

Daha Fazla Oku:


Bu Makaleyi Paylaş

Yorumlar

yorum Yap