Python Alıştırması: Blackjack Karar Mekanizması


Bu alıştırma, öğrenciye if-elif-else, karşılaştırma operatörleri, fonksiyonlar ve karar verme mekanizmalarını öğretmek için tasarlanmıştır. Blackjack oyunu üzerinden ilerlediği için oldukça eğlencelidir.  

Bu alıştırmada bir Blackjack oyuncusuna tavsiye veren küçük bir program geliştireceğiz.

Blackjack’te amaç 21 sayısına mümkün olduğunca yaklaşmak ancak 21’i geçmemektir.

Kart değerleri:

KartDeğer
A1
J10
Q10
K10
2-10Sayısal değeri

Bu alıştırmada fonksiyonları tamamlayarak oyuncunun hangi hamleyi yapması gerektiğini belirleyeceğiz.

Çözümlere bakmadan önce boşlukları kendiniz doldurmaya çalışın.


Soru 1: Kartın Değerini Bulma

Aşağıdaki kartların değerleri verilmiştir:

  • A → 1
  • J, Q, K → 10
  • Diğer kartlar → kendi sayısal değeri

Fonksiyondaki boşlukları doldurun:

Python
def value_of_card(card):
if card == "A":
return _____
elif card in ("J", "Q", "K"):
return _____
else:
return _____

Örnek:

value_of_card("K")

Beklenen sonuç:

10

Soru 2: Hangi Kart Daha Büyük?

İki kart veriliyor.

Daha yüksek değere sahip kartı döndürmek istiyoruz.

Fonksiyonu tamamlayın:

Python
def higher_card(card_one, card_two):
value_one = value_of_card(card_one)
value_two = value_of_card(card_two)
if value_one > value_two:
return ________
else:
return ________

Örnek:

higher_card("K", "8")

Beklenen sonuç:

"K"

Soru 3: As (Ace) Kaç Puan Olmalı?

Blackjack’te bazı durumlarda As kartı 1 yerine 11 olarak değerlendirilebilir.

Yeni gelecek bir As kartının değerini belirlemek istiyoruz.

Kurallar:

  • Eğer eldeki toplam + 11 değeri 21’i geçiyorsa As = 1
  • Geçmiyorsa As = 11

Fonksiyonu tamamlayın:

Python
def value_of_ace(card_one, card_two):
total = (
value_of_card(card_one)
+
value_of_card(card_two)
)
if total + 11 > 21:
return _____
else:
return _____

Örnek:

value_of_ace("9", "K")

Beklenen sonuç:

1

Soru 4: Oyuncunun İlk Hamlesi Ne Olmalı?

Oyuncunun elindeki iki kart ve krupiyenin açık kartı veriliyor.

Kurallar:

Eğer toplam 21 ise

  • Krupiyenin kartı A veya 10 ise:
    • “S” (Stand)
  • Değilse:
    • “W” (Win)

Eğer toplam 17-20 arasındaysa

  • “S”

Eğer toplam 12-16 arasındaysa

  • Krupiye 7 veya üzerindeyse:
    • “H” (Hit)
  • Değilse:
    • “S”

Eğer toplam 11 veya altındaysa

  • “H”

Fonksiyondaki boşlukları doldurun:

Python
def first_turn(
card_one,
card_two,
dealer_card
):
player_total = (
value_of_card(card_one)
+
value_of_card(card_two)
)
dealer_value = value_of_card(dealer_card)
if player_total == 21:
if dealer_value >= _____:
return "S"
return "W"
elif player_total >= _____:
return "S"
elif player_total >= _____:
if dealer_value >= _____:
return "H"
return "S"
else:
return "H"

Çözümler

Çözüm 1

Python
def value_of_card(card):
if card == "A":
return 1
elif card in ("J", "Q", "K"):
return 10
else:
return int(card)

Çözüm 2

Python
def higher_card(card_one, card_two):
value_one = value_of_card(card_one)
value_two = value_of_card(card_two)
if value_one > value_two:
return card_one
return card_two

Çözüm 3

Python
def value_of_ace(card_one, card_two):
total = (
value_of_card(card_one)
+
value_of_card(card_two)
)
if total + 11 > 21:
return 1
return 11

Çözüm 4

Python
def first_turn(
card_one,
card_two,
dealer_card
):
player_total = (
value_of_card(card_one)
+
value_of_card(card_two)
)
dealer_value = value_of_card(dealer_card)
if player_total == 21:
if dealer_value >= 10:
return "S"
return "W"
elif player_total >= 17:
return "S"
elif player_total >= 12:
if dealer_value >= 7:
return "H"
return "S"
else:
return "H"

Bu Alıştırmada Öğrenilenler

Bu çalışma sayesinde aşağıdaki Python konularını uygulamış oldunuz:

  • Fonksiyonlar
  • Karşılaştırma operatörleri (>, <, >=)
  • Mantıksal karar verme
  • if, elif, else
  • String işlemleri
  • Fonksiyon çağırma
  • İç içe koşullar
  • Oyun mantığı geliştirme

Kaynak: https://exercism.org/tracks/python/exercises/black-jack

İndirimli Udemy Eğitimim: https://www.udemy.com/course/proje-yoneticileri-icin-python/?couponCode=HAZIRAN2026

python eğitimi

Bir Cevap Yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.