Selam, kullanıcı eğitim durumunu yazdığı zaman örnek “Lise” bunun listemde olup olmadığını sorgulamak istiyorum koşul ifadesinde ‘in’ ile bunu hallebiliyorum buraya kadar tamam sorun yok. Oluşturmuş olduğum 4 elemanlı bir listem var, fakat girilen string ifadeyi listemdeki elemanın indexinden büyük mü küçük mü diye sorgulayamıyorum ona göre bir yol izleyeceğim. Haliyle “TypeError: list indices must be integers or slices, not str” hatası alıyorum çünkü index elemanlarını sorgulamam için bir tam sayı değer vermem gerekiyor.
Yapmak istediğim Lise mezunu altıysa “En az lise mezunu olmalısınız” üstüyse “Durum başarılı” yazdırmak.
Fakat işin içinden çıkamadım Örnek ;
education = input("Eğitim durumunuzu yazın : ")
education_list = ['ilkokul', 'ortaokul', 'lise', 'üniversite']
if (education.lower() in education_list) and (education.lower() > education_list['ortaokul']):
print("Durum başarılı.")
else:
print("En az Lise mezunu olmak zorundasınız.")
elif koşul ifadesiyle tek tek değerleri sorgulayabilirim elbette fakat çok uzun yöntem olmaz mı? Direkt listeden ilerleyemez miyim ?
Teşekkürler
üniversite değerinin uzunluğu 10 karakter. diğerlerinin uzunlukları arasında 10 karaktere ulaşan yok. böylece kullanıcıdan aldığın education uzunluğunu 2 koşul ifade içinde kontrol ederek çözebilirsin.
if (len(education) >= 10):
print("başarılı")
else:
print("başarısız")
tabi bu geçiçi ve sağlıksız güvenilir olmayan bir kod yapısına sahip çözüm. Sonuçta kullanıcı en abuk girdiler yaparak seni zora sokabilir. sana aslında başka bir tavsiyem var
education_list = ['ilkokul', 'ortaokul', 'lise', 'üniversite']
Teşekkür ederim ilginiz için. Liste içinde büyük küçük sorgulaması yapamaz mıyım benim yukarıda izlediğim yöntem gibi
Hocam emekleriniz için çok teşekkür ederim. Ben çok uzun olmasın daha pratik nasıl yapabileceğimi öğrenmek istemiştim Yoksa soruyu cözemeyecek bir şey yok.
Yanlış anlamayın lütfen, ama sizde cok uzatmışsınız
Benim sorumun cevabı şu 6 satırın arasında yatıyor ; fakat nasıl ? tek olay bu
education = input("Eğitim durumunuzu yazın : ")
education_list = ['ilkokul', 'ortaokul', 'lise', 'üniversite']
if (education.lower() in education_list) and (education.lower() > education_list['ortaokul']):
print("Durum başarılı.")
else:
print("En az Lise mezunu olmak zorundasınız.")
Kullanıcının girdiği değeri, listeyle karşılaştırıp büyük küçük diye sorgulayabilirsem olay çözülüyor
Bu yöntem iyi aslında, enum-vari bir yapı var; şöyle yazsanız:
if education in education_list and education_list[education] >= education_list["lise"]:
print("Bu iş tamamdır.")
else:
print("En az lise mezunu olmak zorundasınız.")
education = input("Eğitim durumunuzu yazın : ")
education_list = ['lise', 'üniversite']
if education in education_list:
print("Durum başarılı.")
else:
print("En az Lise mezunu olmak zorundasınız.")
Dogru cevabin bu kadar asagida olmasi endiselendirici…
Cok da gereksiz degil, listedeki ima edilen siralamayi acikca belirtmek icin kullanilmis. Listenin sirasiz veya baska bir sirayla (alfabetik mesela) olabilmesini istedigin noktada zaten baska sansin yok.
Saygı değer hocalarım. Hocanın bize sorduğu bu soruda, ne liste kullanın diyor ne de sözlük tipi liste kullanın diyor. Hocanın istediği yöntem if-elif-else ile çözmek. Ama bu çok çok basit ve bana göre uzun yöntem. Ben hocanın istediği yöntemle çözdüm zaten. Ekstra olarak listeyle çözmek istedim baktım listeyle işin içinden çıkamadım, dedim bari sözlük tipi listeyle ‘key,value’ üzerinden ilerliyeyim olay bu. Hocam evet bu cümleyi yazdığım yerde dict gereksiz kullanılıyor diye düşünüyorum hala (ben cözemememiştim o an olayı) Hala’da (o kısım için konusuyorum) dict gereksiz. Neden mi ?
education = input("Eğitim durumunuzu yazın : ")
education_list = {
'ilkokul': 0,
'ortaokul': 1,
'lise': 2,
'üniversite': 3
}
if(education in education_list) and (education == 'lise') or (education == 'üniversite'):
print("Bu iş tamamdır.")
else:
print("En az lise mezunu olmak zorundasınız.")
Şu kısma dikkat ;
1 - Burada sözlük için tek gereklilik ‘in’ operatörü bence. if(education in education_list) and (education == 'lise') or (education == 'üniversite'):
2 - if(education == 'lise') or (education == 'üniversite'):
Eğer gayem eşitleyip geçmek olsaydı, direkt böyle yapardım. Bu yüzden Dict ile orada istediğim amaca ulaşamadım ve orada gereksiz dedim ki bu yöntemle gideceksem bence gereksiz. Eşitle geç, nasılsa 2 seçenek yok mu? “lise”, “üniversite” dict’e gerek yok.
Benim öğrenmek istediğim ; dict tip liste veya normal listede nasıl sorgulama yapabilirim vb vb. Ben çözemedim işte o an bir yandan kaynaklara bakarken bir yandanda buraya yazmak istedim. Teşekkürler
100 elemanlı bir dict olduğunda nasıl sorgulayabilirim vb vb diye ilerledim hep olay buralara geldi
Aslında yazılan yöntemlerde bildiğim yöntemler ama bazen takılıyo insan
Ayrıca @aib hocam siz belki 1000 program yazdınız, biz yeni öğreniyoruz
Sorun çözüldü olayı anladım teşekkürler tekrardan herkese
education = input("Eğitim durumunuzu yazın : ").lower()
education_list = ['ilkokul', 'ortaokul', 'lise', 'üniversite']
if (education in education_list) and (education_list.index(education) > education_list.index("ortaokul")):
print("Durum başarılı.")
else:
print("En az Lise mezunu olmak zorundasınız.")
Liste kullanarak şu şekilde yapılabilir ama liste içindeki değerlerin sırasına dikkat etmek lazım.