Merhaba.
Bu tür girdi (input) alma işlemlerinde genel olarak döngüleri kullanırız.
for deneme in range(2, -1, -1):
sys_kullanici_adi = input("Kullanıcı Adı: ")
if sys_kullanici_adi == "Volkan":
print("Eşleşme Başarılı!")
break
else:
if deneme == 0:
print("Eşleşme Başarısız! Deneme hakkınız kalmadı. Sistemden çıkış yapılıyor...")
quit()
else:
print("Eşleşme Başarısız! Lütfen tekrar deneyiniz. Kalan deneme hakkı:", deneme)
for deneme in range(2, -1, -1):
sifre = input("Şifre: ")
if sifre == "VÖ19":
print("Eşleşme Başarılı!")
break
else:
if deneme == 0:
print("Eşleşme Başarısız! Deneme hakkınız kalmadı. Sistemden çıkış yapılıyor...")
quit()
else:
print("Eşleşme Başarısız! Lütfen tekrar deneyiniz. Kalan deneme hakkı:", deneme)
*Yukarıdaki for döngüsünde range()
içerisinde parametre olarak (2, -1, -1) kullandık. Bunu şöyle açıklayabiliriz.
-range()
dediğimiz şey, belirli bir aralık içerisinde sayılar oluşturur ve bu sayıları bir liste içerisine yerleştirir.
-Mesela range(5)
aslında [0, 1, 2, 3, 4] şeklinde bir listedir. Buradaki 5 sayısı, anlaşılacağı üzere üst sınır olarak kullanılmıştır.
-Peki ya alt sınır belirtmek istersek? Cevap basit, range(1, 5)
yaptığımızda bu sefer elde edeceğimiz liste [1, 2, 3, 4] şeklinde olacaktır.
-Peki biz bu listede aralarındaki fark yalnızca 1 olan sayılar mı elde edebiliriz? Elbette hayır.
range(1, 5, 2)
yaptığımızda, buradaki 2 sayısı bizim artış değerimiz olur ve bu sefer [1, 3]
şeklinde bir liste elde ederiz.
-İşin güzel yanı şu ki, alt sınır ile üst sınırın yerini değiştirip, artış değerini de negatif bir değer olarak girdiğimizde, büyükten küçüğe doğru giden bir liste elde edebiliyoruz. Mesela yukarıdaki kodda yer alan range(2, -1, -1)
aslında [2, 1, 0]
şeklindeki bir listedir.
*Şimdi bu listenin for döngüsü içerisinde kullanılmasını açıklayalım.
-for deneme in range(2, -1, -1)
demiştik. Bunu şu şekilde biraz açalım. range(2, -1, -1)
= [2, 1, 0]
olduğundan ötürü bu döngü şu şekilde de yazılabilir: for deneme in [2, 1, 0]
. Burada deneme isimli değişken, [2, 1, 0]
şeklindeki listede sırasıyla gezecektir.
-Peki ne demek bu? Şöyle ki sırayla:
deneme = 2
deneme = 1
deneme = 0
olacaktır.
-Peki bu sıra neye bağlı? Döngü her tamamlanışında başa dönecektir ve her başa dönüşünde de liste içerisinde yer alan bir sonraki değeri baz alacaktır. Eğer ki listenin sonuna gelindiyse bu sefer döngü bitecektir.
-Yani döngünün başında deneme = 2
olup buna göre işlemler yapılırken, bir sonraki ‘iterasyonda’ ise deneme = 1
olup buna göre işlemler yapılacaktır ve nihayet deneme = 0
olup da yine buna göre işlemler yapıldıktan sonra döngü sonlanacaktır.
*Python’da yeni olduğunuz için böyle uzun uzun açıklama gereği duydum, umarım anlaşılır ve doğru bir şekilde açıklamışımdır. İyi çalışmalar dilerim.
Ek Tavsiyeler:
-
input()
ile alınan girdiler zaten str yani string tipinde olacaktır. Bu yüzden yazı olarak bir girdi alacağınız zaman str(input())
yerine doğrudan input()
kullanabilirsiniz.
-
print("Eşleşme Başarısız! Lütfen tekrar deneyiniz. Kalan deneme hakkı:", deneme)
yerine f-string kullanabilirsiniz. f-string’lerde süslü parantez ‘{}’ içerisine, yazı içerisinde yer almasını istediğiniz değişkenleri yazabilirsiniz.
print(f"Eşleşme Başarısız! Lütfen tekrar deneyiniz. Kalan deneme hakkı: {deneme}")
-
Döngülerin yanı sıra ‘fonksiyonlar’ üzerinde de çalışmanızı öneririm. Girdi almayı her istediğimizde bu döngüleri tekrar tekrar oluşturmak istemiyorsak, bu döngüleri bir fonksiyon içerisine yerleştirebiliriz. Mesela;
def giris_icin_girdi_al():
for deneme in range(2, -1, -1):
sys_kullanici_adi = input("Kullanıcı Adı: ")
if sys_kullanici_adi == "Volkan":
print("Eşleşme Başarılı!")
break
else:
if deneme == 0:
print("Eşleşme Başarısız! Deneme hakkınız kalmadı. Sistemden çıkış yapılıyor...")
quit()
else:
print(f"Eşleşme Başarısız! Lütfen tekrar deneyiniz. Kalan deneme hakkı: {deneme}")
for deneme in range(2, -1, -1):
sifre = input("Şifre: ")
if sifre == "VÖ19":
print("Eşleşme Başarılı!")
break
else:
if deneme == 0:
print("Eşleşme Başarısız! Deneme hakkınız kalmadı. Sistemden çıkış yapılıyor...")
quit()
else:
print(f"Eşleşme Başarısız! Lütfen tekrar deneyiniz. Kalan deneme hakkı: {deneme}")
giris_icin_girdi_al()
giris_icin_girdi_al()
-Burada giris_icin_girdi_al
isimli bir fonksiyon tanımladık. def giris_icin_girdi_al()
-Bundan sonra kullanıcı adı ve şifre için girdi almak istediğinizde bu giris_icin_girdi_al
fonksiyonunu giris_icin_girdi_al()
yazarak çağırabiliriz.
Edit: break
komutundan bahsetmeyi unutmuşum. Döngüleri istediğimiz bir yerde durdurmak için break
komutunu kullanırız. Mesela şifre doğru girildiğinde, yeniden şifre sormaması için döngüyü break
ile sonlandırıyoruz.