Python’da Sayılar ve Matematiksel İşlemler: Currency Exchange Alıştırması

Colorful digital division symbol surrounded by numbers and percentage charts

Soru 1: Döviz Çevirme

Bir müşterinin elindeki parayı başka bir para birimine çevirmek istiyoruz.

Örnek:

  • Bütçe: 127.50 USD
  • Kur: 1.20

Fonksiyonu tamamlayın:

def exchange_money(budget, exchange_rate):
return ________

İpucu:

127.50 doların kaç Euro edeceğini bulmak için hangi matematiksel işlem gerekir?


Soru 2: Para Üstü Hesaplama

Bir müşteri bütçesinin sadece bir kısmını bozduruyor.

Örnek:

  • Toplam para: 127.50
  • Bozdurulan miktar: 120

Fonksiyonu tamamlayın:

def get_change(budget, exchanging_value):
return ________

İpucu:

Kalan miktarı bulmak için hangi operatörü kullanırsınız?


Soru 3: Banknotların Toplam Değeri

Elinizde:

  • 128 adet banknot
  • Her biri 5 Euro

Fonksiyonu tamamlayın:

def get_value_of_bills(denomination, number_of_bills):
return ________

İpucu:

Toplam değeri nasıl hesaplarsınız?


Soru 4: Kaç Adet Banknot Verilebilir?

Bir müşterinin 127 Euro’su var.

Döviz bürosunda yalnızca 20 Euro’luk banknotlar bulunuyor.

Fonksiyonu tamamlayın:

def get_number_of_bills(amount, denomination):
return ________

İpucu:

Yarım banknot verilemeyeceği için hangi bölme operatörünü kullanmanız gerekir?


Soru 5: Kalan Küsuratı Bulma

127 Euro’nun 20 Euro’luk banknotlara ayrıldığını düşünün.

Tam banknotlar verildikten sonra kaç Euro kalır?

Fonksiyonu tamamlayın:

def get_leftover_of_bills(amount, denomination):
return ________

İpucu:

Python’da kalan bulmak için hangi operatör kullanılır?


Soru 6: Komisyonlu Döviz Kuru

Bir döviz bürosu %10 komisyon alıyor.

Normal kur:

exchange_rate = 1.20

Gerçek kuru hesaplayan satırı tamamlayın:

actual_rate = ______________________

İpucu:

Önce komisyon oranını hesaplayın, sonra kuru artırın.


Soru 7: Alınabilecek Döviz Miktarı

Aşağıdaki fonksiyonda eksik satırları tamamlayın:

def exchangeable_value(
budget,
exchange_rate,
spread,
denomination
):
actual_rate = ______________________
exchanged_amount = ______________________
number_of_bills = ______________________
return ______________________

Amaç:

Komisyon uygulandıktan sonra müşteriye verilebilecek toplam tam banknot değerini hesaplamak.


Çözümler

Çözüm 1

def exchange_money(budget, exchange_rate):
return budget / exchange_rate

Çözüm 2

def get_change(budget, exchanging_value):
return budget - exchanging_value

Çözüm 3

def get_value_of_bills(denomination, number_of_bills):
return denomination * number_of_bills

Çözüm 4

def get_number_of_bills(amount, denomination):
return amount // denomination

Çözüm 5

def get_leftover_of_bills(amount, denomination):
return amount % denomination

Çözüm 6

actual_rate = exchange_rate * (1 + spread / 100)

Çözüm 7

def exchangeable_value(
budget,
exchange_rate,
spread,
denomination
):
actual_rate = exchange_rate * (1 + spread / 100)
exchanged_amount = budget / actual_rate
number_of_bills = exchanged_amount // denomination
return int(number_of_bills * denomination)

Bu Alıştırmada Öğrendiklerimiz

Bu çalışma sayesinde aşağıdaki Python konularını uygulamalı olarak kullanmış olduk:

  • Fonksiyonlar
  • Parametreler
  • Ondalıklı sayılar (float)
  • Bölme (/)
  • Tam sayı bölmesi (//)
  • Kalan bulma (%)
  • Çarpma (*)
  • Çıkarma (-)
  • Yüzde hesaplama
  • Finansal hesaplamaların temelleri

Gerçek hayattaki birçok finans, muhasebe ve raporlama uygulaması bu temel matematiksel işlemler üzerine kuruludur.

Kaynak: https://exercism.org/tracks/python/exercises/currency-exchange

Python’da Boolean Mantığı: Ghost Gobble Arcade Game Alıştırması

Pac-Man eating pellets while being chased by a blue ghost in a maze

Python öğrenirken karşılaştığımız ilk önemli konulardan biri mantıksal (Boolean) değerlerdir. Exercism platformundaki “Ghost Gobble Arcade Game” alıştırması da bu konuyu eğlenceli bir Pac-Man senaryosu üzerinden öğretmektedir.  

Bu alıştırmada amaç, Pac-Man’in oyun içerisindeki bazı durumlarını Boolean ifadeler kullanarak belirlemektir.

Kaynak: https://exercism.org/tracks/python/exercises/ghost-gobble-arcade-game

Boolean Nedir?

Python’da Boolean veri tipi yalnızca iki değer alabilir:

True
False

Bu değerler genellikle bir koşulun doğru veya yanlış olduğunu ifade etmek için kullanılır.

Örneğin:

is_raining = True
is_sunny = False

Boolean ifadelerde üç temel operatör kullanılır:

OperatörAnlamı
andVE
orVEYA
notDEĞİL

Örnek:

True and True # True
True and False # False
True or False # True
False or False # False
not True # False
not False # True

Oyun Senaryosu

Pac-Man oyununda aşağıdaki kurallar bulunmaktadır:

  • Güç hapı (Power Pellet) alan Pac-Man hayaletleri yiyebilir.
  • Nokta (Dot) veya güç hapı topladığında puan kazanır.
  • Hayalete dokunursa kaybedebilir.
  • Tüm noktaları toplarsa oyunu kazanabilir.

Bu kuralları Python fonksiyonları ile modelleyeceğiz.  


1. Pac-Man Hayalet Yiyebilir mi?

Pac-Man’in hayalet yiyebilmesi için iki şartın aynı anda sağlanması gerekir:

  • Güç hapı aktif olmalı.
  • Hayalete temas ediyor olmalı.
def eat_ghost(power_pellet_active, touching_ghost):
return power_pellet_active and touching_ghost

Örnek:

eat_ghost(True, True)

Sonuç:

True

Çünkü iki koşul da sağlanmaktadır.


2. Pac-Man Puan Kazandı mı?

Pac-Man aşağıdaki durumların herhangi birinde puan kazanır:

  • Bir nokta (dot) toplarsa
  • Bir güç hapı (power pellet) toplarsa

Burada “VEYA” mantığı kullanılmalıdır.

def score(touching_power_pellet, touching_dot):
return touching_power_pellet or touching_dot

Örnek:

score(False, True)

Sonuç:

True

Çünkü bir nokta toplamıştır.


3. Pac-Man Kaybetti mi?

Pac-Man aşağıdaki durumda oyunu kaybeder:

  • Hayalete dokunmuştur.
  • Güç hapı etkisi aktif değildir.
def lose(power_pellet_active, touching_ghost):
return touching_ghost and not power_pellet_active

Örnek:

lose(False, True)

Sonuç:

True

Çünkü Pac-Man korunmasız durumdayken hayalete temas etmiştir.


4. Pac-Man Oyunu Kazandı mı?

Oyunu kazanmak için:

  • Tüm noktalar yenmiş olmalı.
  • Pac-Man kaybetmiş olmamalı.

Önce kaybetme durumunu tekrar düşünelim:

touching_ghost and not power_pellet_active

Eğer bu durum oluşmuyorsa ve tüm noktalar yenmişse oyun kazanılmıştır.

def win(has_eaten_all_dots,
power_pellet_active,
touching_ghost):
return (
has_eaten_all_dots
and
not (touching_ghost and not power_pellet_active)
)

Örnek:

win(True, True, True)

Sonuç:

True

Çünkü tüm noktalar yenmiştir ve Pac-Man güç hapı sayesinde hayaletten etkilenmemektedir.


Mantıksal Tablolarla Düşünmek

Örneğin eat_ghost() fonksiyonu için:

Güç HapıHayalete TemasSonuç
FalseFalseFalse
FalseTrueFalse
TrueFalseFalse
TrueTrueTrue

Burada yalnızca iki koşul aynı anda gerçekleştiğinde sonuç True olmaktadır.


Bu Alıştırmanın Öğrettiği Konular

Bu küçük alıştırma aslında Python’un temel mantık yapılarının çoğunu öğretmektedir:

  • Boolean veri tipi
  • Mantıksal operatörler (and, or, not)
  • Koşul değerlendirme
  • Fonksiyon yazımı
  • Gerçek hayat kurallarını kod ile modelleme

Programlama dünyasında birçok karar mekanizması bu mantık yapıları üzerine kuruludur. Kullanıcı giriş kontrolleri, güvenlik sistemleri, oyun mekanikleri ve iş kuralları genellikle Boolean ifadelerle ifade edilir. Bu nedenle Ghost Gobble Arcade Game alıştırması, Python öğrenenler için oldukça değerli bir başlangıç çalışmasıdır.