Takım Bilgilerini Saklamak

takimlar = ['Başakşehir','Beşiktaş','Trabzonspor','Fenerbahçe','Galatasaray'[2014,1903,1967,1907,1905]]

while True:
    takim =     input("Tutuğunuz takımı giriniz: ")
    m_takim =   takim in takimlar
    if m_takim == True:
        break
    elif not takim:
        print("Boş geçilemez.")
    else:
        print("Hatalı")

print("Tuttuğu takım:",takim)

Bundan şöyle bir çıktı almak istiyorum.
Mesela kişi Beşiktaş diye girdi. Çıktı;

Beşiktaş (1903)

olacak.
Başakşehir diye girdi. Çıktı;

Başakşehir (2014)

diye olacak.
Bunu nasıl yapabilirim. Daha doğrusu bu stil üzerinden bu mümkün mü? Yoksa farklı bir şekil mi denemeliyim.

Not: if, if, if diye gitmek istemiyorum.

(Bunları öğrenmek için deniyorum.) - (Başlık bulamadım o sebep ile bunu koydum.)

Dictionary kullanabilirsiniz:

dic = {"Başakşehir":2014,"Beşiktaş":1903,"Trabzonspor":1967,"Fenerbahçe":1903,"Galatasaray":1905}


while True:
	takım = input("Lütfen tuttuğunuz takımı girin : ")
	if takım in dic.keys():
		print(f"\nTuttuğun takım : {takım}({dic[takım]})\n")
	elif takım == "exit":
		exit()
	elif takım not in dic.keys():
		print("Hata")



İki liste kullanabilirsiniz ama fazla uzun olur önceden tanımlı metot kullanmak daha az kod yazmanızı sağlar.

3 Beğeni

Vermiş olduğunuz kodlar üzerinde print()'in bulunduğu satırı
print(f"Tuttuğu takım: {takim} ({takimlar[5][takimlar.index(takim)]})")
yapacak olursanız amacınıza ulaşabilirsiniz. Bununla birlikte şu yollarla da istediğinize ulaşabilirsiniz.
Dictionary (sözlük) oluşturabilirsiniz:

takimlar = {'Başakşehir': 2014, 'Beşiktaş': 1903,'Trabzonspor': 1967, 'Fenerbahçe': 1907, 'Galatasaray': 1905}

while True:
    takim = input("Tuttuğunuz takımı giriniz: ")
    if takim == "":
        print("Boş girilemez")
    elif takim not in takimlar:
        print("Girdiğiniz takım ismi yanlış")
    else:
        print(f"Tuttuğunuz takım: {takim}({takimlar[takim]})")

2 ayrı liste oluşturabilirsiniz.

takimlar = ['Başakşehir', 'Beşiktaş','Trabzonspor', 'Fenerbahçe', 'Galatasaray']
seneler = [2014, 1903, 1967, 1907, 1905]

while True:
    takim = input("Tuttuğunuz takımı giriniz: ")
    if takim == "":
        print("Boş girilemez")
    elif takim not in takimlar:
        print("Girdiğiniz takım ismi yanlış")
    else:
        print(f"Tuttuğunuz takım: {takim}({seneler[takimlar.index(takim)]})")
3 Beğeni

list yerine bir dict kullanabilirsiniz

takimlar = {
  "Başakşehir": 2014,
  "Beşiktaş": 1903,
  "Trabzonspor": 1967,
  "Fenerbahçe": 1907,
  "Galatasaray": 1905
}
while True:
  takim = input("Tuttuğunuz takımı giriniz: ")
  m_takim = takim in takimlar 
  if m_takim:
    break

  elif not takim:
    print("Boş geçilemez.")

  else: 
    print("Hatalı")


print(f"Tuttuğunuz takım: {takim} ve {takimlar[takim]} yılında kuruldu")

4 Beğeni

İyi geceler öncelikle.
Herkes güzel güzel örnekler vermiş
bende şöyle bırakayım…
(bende Dictionary kullanmayı tercih ettim)

takimlarV2 = {
	"Başakşehir"  : 2014,
	"Beşiktaş"    : 1903,
	"Trabzonspor" : 1967,
	"Fenerbahçe"  : 1907,
	"Galatasaray" : 1905}

while True:
	try:
		sorgu = input("Bir Takım Girin -> ").capitalize()
		soru = [i for i in takimlarV2.keys() if i in sorgu]
		print(f"{sorgu}",takimlarV2[sorgu],sep=" ")
		break
	except KeyError:
		print("Yazdığınız ifade Tanımsız!")
1 Beğeni
teams = {
    'Başakşehir':{
        'year':2014,
        'short':'İBFK',
    },
    'Beşiktaş':{
        'year':1903,
        'short':'BJK',
    },
    'Trabzonspor':{
        'year':1967,
        'short':'TS',
    },
    'Fenerbahçe':{
        'year':1907,
        'short':'FB',
    },
    'Galatasaray':{
        'year':1905,
        'short':'GS'
    }
} 

while True:
    team = input("Tuttuğunuz takımı giriniz: ")
    m_team = team in teams
    if team in teams:
        print(f"Tuttuğunuz takım: {team} ({teams[team]['year']})")
        break
    elif team == '':
        print('Boş geçilemez.')
    elif not team in teams :
        print("Girdiğiniz takım ismi yanlıştır, yeniden deneyin")
        tercih = input("Çıkış için Çıkış yazınız. Yeniden denemek için enter tuşuna basınız.")
        if tercih == '':
            continue
        elif tercih == 'Çıkış':
            print('Çıkış yapıldı.')
            break
    else:
        print("Hatalı giriş yaptınız.")

Çok teşekkür ederim bahsettiğiniz konuyu inceleyince ve sizlerden öğrendiklerimle harmanlayınca böyle bişey yaptım :slight_smile:

Bu iki kaynağı inceledim :slight_smile:

https://python-istihza.yazbel.com/sozlukler.html

1 Beğeni

Hocalarım şuradaki yıl değerlerini integer olarak çekmem mümkün mü?

Mümkün tabii ki örneğin galatasarayınki:
print(teams['Galatasaray']['year'])

1 Beğeni

Yardımınız için teşekkür ederim. Bulmuştum ama buradaki soruyu unutmuşum.

Bu listeden takım isimlerini çekmem mümkün mü?
Bunu denedim ama:

for x in teams:
    print(teams[x])

Şu çıktıyı aldım:

{'Başakşehir': 2014, 'Beşiktaş': 1903...}

Önerebileceğiniz detaylı Türkçe veya İngilizce kaynak varsa onlarda çok iyi olur :slight_smile:

for x in teams.keys():
    print(x)

olarak değiştirirseniz her bir takıma ulaşırsınız. Türkçe kaynak olarak bunu öneririm. Sözlükler için önerdiğim kaynaktan şu başlığın altındaki yazıları deneyerek okuyun

print(x)

yerine

print(teams[x])

olarak üstteki yazdığınızda değişiklik uygulamazsanız yalnızca sözlükteki anahtar kelimelerin sahip olduğu değerleri görürsünüz.

1 Beğeni

Teşekkür ederim hocam son olarak şunu yaptım :smiley:

hayvanlar={
    'kara':{
        'tavşan': 'zıp zıp',
        'inek'  : 'möö',
        'koyun' : 'mee'
    },
    'hava':{
        'arı': 'vız vız'
    }
}
print(hayvanlar)
for tavsan in hayvanlar['kara']:
    r = 'tavşan' == tavsan
    if r:
        a = tavsan
        b = hayvanlar['kara'][a]
        print(a, b)

Bunun daha sade/yalın hâli varsa fikrinizi öğrenmekten çok müteşekkir olurum.

Birde sanırım buradaki bilgi güncel değil. Benim bildiğime göre son Python sürümlerinde bu durum sabit. (Yanlış bilmiyorsam)

Şöyle uğraşmaktansa bir fonksiyon oluşturup onun içinde küçük if elif’ler ile daha basit bir görüntüye kavuşturulabilir.
Mesela:

def hayvanlarrr(text):
    if text == "":
        print("Bir hayvan girmelisiniz!")

    elif text in hayvanlar['kara']:
        print(hayvanlar['kara'][text])

    elif text in hayvanlar['hava']:
        print(hayvanlar['hava'][text])
        
hayvanlarrr("inek")

isterseniz print yerine return kullanabilirsiniz. Fonksiyonu çağırırken de print’in içine yazarsınız.

def hayvanlarrr(text):
    if text == "":
        return "Bir hayvan girmelisiniz!"

    elif text in hayvanlar['kara']:
        return hayvanlar['kara'][text]

    elif text in hayvanlar['hava']:
        return hayvanlar['hava'][text]

print(hayvanlarrr("inek"))

Sanırım yanlış biliyor olabilirsiniz. Çünkü denediğinizde sizde göreceksiniz listelerdeki gibi bir çağırma işlemi uygularken IDE zaten hata olduğunu size gösteriyor onunla da yetinmeyip çalışıtırıp denediğinizde hata mesajını verdiğini görebilirsiniz.

1 Beğeni

Evet o şekil veri çekilmiyor ama bence onu da ekleyecekler yakın bir zamanda :smiley: Tabi bu sadece benim bir tahminim

Bunu deme sebebim buradaki kaynaktır: Python Lists

3.7’den beri dict’ler anahtar ve değerlerin eklenme sırasını koruyorlar. Ama ne anahtarlar ne de değerler bir indeks ile doğrudan erişilebilecek durumda değil.

1 Beğeni

İki değer arasında nasıl işlem yaparım?

hayvanlar={
    'Kara':{
        'Tavşan': 1,
        'Kedi': 2
    },
    'Hava':{
        'Martı': 5,
        'Arı': 7
    }
}

Bu değerlerden şu çıktıyı nasıl alabilirim?
Random şeklinde birini seçecek. Bir hava, bir kara.

Yani çıktı şu tarz olacak;

Martı 5 tane bulunmaktadır.
Tavşan 1 tane bulunmaktadır.

Bu arada bu olayın petshop ile bir ilgisi yok :smiley:

Ben bişeyler yapmaya uğraştım ama beceremedim bu bayaha zorladı. :slight_smile:
— Düzenleme —

rand = random.choice(list(hayvanlar['Kara'].keys()))
randd = (hayvanlar['Kara'][rand])
print(f"{rand} {randd} tane bulunmaktadır.")

Şeklinde yaptım.
Ancak aklıma şu geldi dictionary (sözlüğü) karıştırıp for x in ile veriyi çeksem daha mantıklı olur.
Ancak random.shuffle işe yaramadı. Sanırım arkadaşın dediği duruma geldik :smiley:

Bu sebeple şu mümkün mü sözlük içerisindekileri listeye çevirebilir miyiz?

kelime_torbasi = ['Kara','Hava']
hayvan_kafesi = ['Tavşan','Kedi','Martı','Arı']

hayvanlar={
    'Kara':{
        'Tavşan': 1,
        'Kedi': 2
    },
    'Hava':{
        'Martı': 5,
        'Arı': 7
    }
}
torba = random.choice(kelime_torbasi)
kafes = random.choice(hayvan_kafesi)
print(torba,list(hayvanlar[torba].items())[random.randint(0,1)])

Bende şöyle bir yöntem denedim fakat çıktı istediğiniz gibi değil de şöyle oluyor,
örneğin:

Kara (‘Tavşan’, 1)

Üstünde biraz daha uğraşılırsa belki istediğiniz olur

1 Beğeni

Benim çözümüm bu şekilde:

import random

hayvanlar= {
    'Kara':{
        'Tavşan': 1,
        'Kedi': 2
    },
    'Hava':{
        'Martı': 5,
        'Arı': 7
    }
}

habitat = random.choice([i for i in hayvanlar])
animal = random.choice([i for i in hayvanlar[habitat] ])

print(f"{animal} { hayvanlar[habitat][animal] } tane bulunmaktadır")
1 Beğeni

Bende bu şekilde yaptım.

hayvanlar={
    'Kara':{
        'Tavşan': 1,
        'Kedi': 2
    },
    'Hava':{
        'Martı': 5,
        'Arı': 7
    }
}

hava = []
kara = []
for key, value in hayvanlar['Hava'].items():
    r = [key, value]
    q = hava.append(r)

for key, value in hayvanlar['Kara'].items():
    r = [key, value]
    q = kara.append(r)

hava_r = random.choice(hava)
kara_r = random.choice(kara)
print(f"{hava_r[0]} {hava_r[1]} tane bulunmaktadır.")
print(f"{kara_r[0]} {kara_r[1]} tane bulunmaktadır.")

Hocam çok güzel ama burada kullanılan .keys() fazlalık değil mi? Bir amacı var mıdır?

Bu pek de iyi bir çözüm değil çünkü mesela dict güncellenirse (örneğin dict’e su adında bir key eklense) sizin kodları güncellemeniz gerekecek.

Bir amacı yok ve evet, fazlalık. Benim hatam, gözden kaçmış :slight_smile:

1 Beğeni

Hocam doğru diyorsunuz. Sizin ki daha pratik oluyor peki bunda ikinci hayvanı nasıl yazabiliriz?
Sizin kodlar üzerinden bunu yapmaya çalışacağım :slight_smile:

—Düzenleme—
Hocam şöyle oldu gibi :smiley:

hayvanlar= {
    'Kara':{
        'Tavşan': 1,
        'Kedi': 2
    },
    'Hava':{
        'Martı': 5,
        'Arı': 7
    },
    'Su':{
        'Hamsi': 10,
        'Palamut': 4,
    }
}
while len(hayvanlar):
    habitat = random.choice([i for i in hayvanlar])
    animal = random.choice([i for i in hayvanlar[habitat]])
    print(f"{animal} { hayvanlar[habitat][animal] } tane bulunmaktadır")
    hayvanlar.pop(habitat)
1 Beğeni