Merhaba hobi olarak öğrenmeye yeni başladım. Daha yolun en başındayım. Aşağıda yazdığım kodda False oluşumu hangi if bloğu durumundan kaynaklanıyorsa o durumun mesajını yazdırmayı başardım fakat count fonksiyonu for döngüsünden dolayı saydığı her aynı harf için doğal olarak print mesajı basıyor. Bu yapıda şifrenin içinde aynı karakterden kaç tane olursa olsun 1 mesaj yazdırmanın yolu var mıdır. Şifre içinde aynı harfin 2 kez yazılmamasının istenmesi pek olası değil ama ben sadece öğrendiğim konularla bu yapılabilir mi diye merak ediyorum. Öğrendiğim kadar konu ile ben beceremedim en azından. Teşekkür ederim.
sifre = input("Sifrenizi Giriniz: ")
kontrol = True
for i in sifre:
if sifre.count(i) > 1:
kontrol = False
print("Parolanızda aynı harfi bir kez kullanabilirsiniz!")
elif len(sifre) < 7:
kontrol = False
print("Parola en az 7 karakterden olusmalidir.")
break
if kontrol:
print("Giris Kabul Edildi")
Şifre içerisindeki karakterleri bir dict içerisine atabilirsin. Her karakter bir defa içeriye girdiği için for döngüsünün elemanları sadece bir defa aynı karakter değerine sahip olacaktır.
Bu şekilde yalnızca bir defa print bastıracak.
Aklıma bir şey takıldığı için sormak istiyorum. “kontrol = True” değişkenini while döngüsünde de gördüm. Bu değişkenin buradaki özelliği nedir?
Yani gördüğüm kadarıyla ne “for” ile bağlantısı var, ne de başka bir yerle. Kendi kendisine öyle duruyorken ne oluyor da if bloğunda “false” olması bir şeye yarıyor
Esasen bu kontrol değişkenlerinin kullanımını kavrayamadım tam olarak. Anlatabilen olursa sevinirim.
O halde bu kod satırında “kontrol = True” derken, öncelikli olarak kontrolü true tutup for işlemine geç ancak for işleminde yanlışlık olursa devam etme, kontrol false olsun mu denmek istenmiş?
Yani bu tür bool değerler, kendisinden sonraki işleme geçiş yapmak için referans mı alınıyor kısacası?
Sn.aib yanıtınız için teşekkür ederim. Kodun ilk halinde sadece bir karakterin birden fazla gectiği durumları kontrol ettirip sonucu tamda sizin belirttiğiniz gibi çözmüştüm. Sorun kodu kıt bilgimle biraz daha geliştirmek için 2. bir if bloğunda da girilen parolanın uzunluğunu kontrol ettirmek istediğimde çıktı. Hangi durumdan dolayı false olduğu mesajını ayrı ayrı veremedim Else blogundan sonra, bu yüzden ıf bloklarının içinde çözebilirmiyim yoluna gittim.
Sn Frequenter oluşturduğum sözlüğün value değerini atadığım karakter değişkenindeki elemanları saydıramıyorum hatam nerede acaba. Teşekkürler
user = input("Kullanici adiniz: ")
password = input("sifre: ")
entry = {user: password}
karakter = entry.values()
kontrol = True
for i in karakter:
if karakter.count(i) > 1:
kontrol = False
print("Parolanızda aynı harfi bir kez kullanabilirsiniz!")
break
elif len(password) < 7:
kontrol = False
print("Parola en az 7 karakterden olusmalidir.")
break
if kontrol:
print("Giris Kabul Edildi")
Evet hata bende dict ile işimiz yok kümeler ile çalışmamız gerekiyor.
Dict ile yapsaydık tüm value değerleri 0’a atanabilir.
Eğer eşleşen değer varsa arttirabiliriz.
Sonuc olarak herhangi bir değer birden fazla kez kullanıldıysa hata verdirebiliriz.
Fakat gerek yok kümeler ile basit bir işlem hâline dönecektir.
Sn.aib ben bu sekilde cozebildim. Else blogu ile 2 farkli print almayi beceremedim. Cozumunuzu paylasirsaniz memnun olurum. Cok tesekkurler.
password = input("parola: ")
kontrol = True
for i in password:
if password.count(i) > 1:
kontrol = False
print('Parola da aynı harfi bir kez kullanabilirsiniz!')
break
elif len(password) < 7:
kontrol = False
print("Parola en az 7 karakterden olusmalidir.")
break
if kontrol:
print("Giris Kabul Edildi")
Ben henuz o konulara cok uzagim if elif ve else bloklari ile kendi urettigim cozumu paylastim. bu bloklar ile farkli ve daha kisa bir kod yazilabiliyorsa paylasirsaniz sevinir ogrenmis olurum. Ilginiz icin tekrar tesekkurler.