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.)
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.
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)]})")
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")
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
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.
Şö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.
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.
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
Ben bişeyler yapmaya uğraştım ama beceremedim bu bayaha zorladı.
— 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
Bu sebeple şu mümkün mü sözlük içerisindekileri listeye çevirebilir miyiz?
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")
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?