Secret Auction Nedir?
Secret Auction (Gizli Müzayede), bir grup katılımcının gizli tekliflerde bulunduğu bir açık artırma oyunudur. Katılımcılar tekliflerini sunar ve en yüksek teklifi veren kazanır. Bu oyun, tekliflerin gizli tutulması nedeniyle stratejik düşünmeyi teşvik eder ve genellikle eğlence amaçlı düzenlenir.
Proje Hedefleri ve Öğrenci Faydaları
Bu proje ile öğrenciler, temel Python bilgilerini kullanarak basit ve fonksiyonel programlar geliştirme becerilerini pekiştireceklerdir. Ayrıca, kullanıcı etkileşimi ve veri işleme konularında deneyim kazanacaklardır.
Projenin Hedef Çıktıları
Temel Python yapıları ve kontrol akışlarını kullanarak bir gizli müzayede uygulaması oluşturma.
Kullanıcıdan veri alma ve bu verileri işleyerek müzayede akışını yönetme.
Fonksiyonlar yardımıyla daha modüler ve okunabilir kod yazma.
Projenin Adım Adım Görevleri
Katılımcılardan teklifleri alma.
En yüksek teklifi belirleme.
Kazananı ve teklifini ekrana yazdırma.
Fonksiyonlar kullanarak kodu daha modüler hale getirme.
Fonksiyonsuz Çözüm
Adım 1: Katılımcılardan Teklifleri Alma
İlk adımda, katılımcılardan teklifleri alınacaktır.
# Katılımcılardan teklifleri alma
teklifler = {}
devam = True
while devam:
isim = input("İsminizi girin: ")
teklif = int(input("Teklifinizi girin: "))
teklifler[isim] = teklif
devam_mi = input("Başka teklif var mı? (evet/hayır): ").lower()
if devam_mi == 'hayır':
devam = False
Bu kod parçası, kullanıcıdan isim ve teklif alır ve teklifleri teklifler sözlüğüne ekler. Kullanıcı, başka teklif olup olmadığını belirterek devam edip etmeyeceğine karar verir.
Adım 2: En Yüksek Teklifi Belirleme
İkinci adımda, en yüksek teklifi veren belirlenir.
# En yüksek teklifi belirleme
en_yuksek_teklif = 0
kazanan = ""
for isim, teklif in teklifler.items():
if teklif > en_yuksek_teklif:
en_yuksek_teklif = teklif
kazanan = isim
Bu kod parçası, en yüksek teklifi ve bu teklifi veren katılımcıyı belirler.
Adım 3: Kazananı ve Teklifini Ekrana Yazdırma
Üçüncü adımda, kazanan ve teklifi ekrana yazdırılacaktır.
# Kazananı ve teklifini ekrana yazdırma
print(f"Kazanan: {kazanan}, Teklif: {en_yuksek_teklif}")
Bu kod parçası, kazananın ismini ve teklifini ekrana yazdırır.
Fonksiyonlarla Çözüm
Adım 1: Katılımcılardan Teklifleri Alma Fonksiyonu
İlk adımda, katılımcılardan teklifleri alınacaktır.
def teklifleri_al():
"""Katılımcılardan teklifleri alır."""
teklifler = {}
devam = True
while devam:
isim = input("İsminizi girin: ")
teklif = int(input("Teklifinizi girin: "))
teklifler[isim] = teklif
devam_mi = input("Başka teklif var mı? (evet/hayır): ").lower()
if devam_mi == 'hayır':
devam = False
return teklifler
Bu fonksiyon, katılımcılardan isim ve teklif alır ve teklifleri teklifler sözlüğüne ekleyerek döndürür.
Adım 2: En Yüksek Teklifi Belirleme Fonksiyonu
İkinci adımda, en yüksek teklifi veren belirlenir.
def en_yuksek_teklifi_belirle(teklifler):
"""En yüksek teklifi belirler."""
en_yuksek_teklif = 0
kazanan = ""
for isim, teklif in teklifler.items():
if teklif > en_yuksek_teklif:
en_yuksek_teklif = teklif
kazanan = isim
return kazanan, en_yuksek_teklif
Bu fonksiyon, en yüksek teklifi ve bu teklifi veren katılımcıyı belirler ve döndürür.
Adım 3: Kazananı ve Teklifini Ekrana Yazdırma Fonksiyonu
Üçüncü adımda, kazanan ve teklifi ekrana yazdırılacaktır.
def sonucu_yazdir(kazanan, en_yuksek_teklif):
"""Kazananı ve teklifini ekrana yazdırır."""
print(f"Kazanan: {kazanan}, Teklif: {en_yuksek_teklif}")
Bu fonksiyon, kazananın ismini ve teklifini ekrana yazdırır.
Adım 4: Oyunu Başlatma Fonksiyonu
Bu fonksiyon, Secret Auction oyununu başlatır ve oyunun akışını yönetir.
def oyunu_baslat():
"""Secret Auction oyununu başlatır."""
teklifler = teklifleri_al()
kazanan, en_yuksek_teklif = en_yuksek_teklifi_belirle(teklifler)
sonucu_yazdir(kazanan, en_yuksek_teklif)
# Oyunu başlatma
oyunu_baslat()
Bu fonksiyon, Secret Auction oyununu başlatır ve oyunun akışını yönetir. Kullanıcı tekliflerini alır, en yüksek teklifi belirler ve sonucu ekrana yazdırır.
Kullanılan Konular
Veri Tipleri: Bu projede, sözlükler (teklifler) ve stringler (katılımcı isimleri, teklif) kullanılmıştır.
Sözlükler: Teklifler sözlük şeklinde tutulmuştur.
Koşullu İfadeler: if-else yapıları, en yüksek teklifi belirlemek ve kullanıcıdan başka teklif olup olmadığını sormak için kullanılmıştır.
Fonksiyonlar: Fonksiyonlar, kodun modüler ve tekrar kullanılabilir olmasını sağlamıştır.
Döngüler: while döngüsü, kullanıcı tekliflerini almak için kullanılmıştır.