Çözüldü For döngüsünde tekrar soruya dönmesi nasıl sağlanır?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

deezwend

Hectopat
Katılım
28 Haziran 2021
Mesajlar
294
Çözümler
4
Daha fazla  
Cinsiyet
Erkek
Python:
import sys
import time
import os

#mkdir, #makedirs the functions that create new files.

os.chdir("C:/Users\Buğra\PycharmProjects\python\os")
print(os.getcwd(), os.listdir())
try:
 os.mkdir("Projeler")
 os.makedirs("Projeler/Python")
 time.sleep(2)
 print("Oluşturuldu.")
except:
 sil = input("Dosya zaten mevcut. Silinmesini ister misiniz ? Y/N\n")
 for i in sil:
 if not i == "Y" or "N":
 print("Sadece Y ya da N girin.")
 continue
 if sil == "Y":
 os.removedirs("Projeler/Python")
 print("Silindi.")
 if sil == "N":
 print("Hayır dediğiniz için program kapandı.")
 sys.exit()


Merhaba, yukarıda gördüğünüz gibi "except" kod bloğundan sonra yazdığım "for" döngüsündeki gibi eğer cevap Y veya N dışı bir şey olursa tekrar soruya dönmesini istedim ve sonuna da continue fonksiyonunu ekledim. Fakat program orada sonlanıyor eğer cevap Y ya da N dışı bir şey olursa. Yardımcı olabilir misiniz rica etsem bu konu hakkında? Teşekkürlerimi sunuyorum sizlere şimdiden.
 
Son düzenleyen: Moderatör:
Çözüm
Python:
def sil_fun():
    sil = input("Dosya zaten mevcut. Silinmesini ister misiniz ? Y/N\n")
    if sil == "Y":
        os.removedirs("Projeler/Python")
        print("Silindi.")
    elif sil == "N":
        print("Hayır dediğiniz için program kapandı.")
    else:
        return sil_fun()

Böyle bir fonksiyon ekleyebilirsin üst tarafa. Except içine de sadece bu fonksiyonu çağırman yetecektir.

Tek bir karakter için neden for döngüsünde kontrol yaptığını anlayamadım doğrusu. Bütün hali aşağıdaki gibi:

Python:
import sys
import time
import os

def sil_fun():
    sil = input("Dosya zaten mevcut. Silinmesini ister misiniz ? Y/N\n")
    if sil == "Y":
        os.removedirs("Projeler/Python")
        print("Silindi.")
    elif sil == "N":
        print("Hayır dediğiniz için program kapandı.")
    else:
        return sil_fun()

#mkdir, #makedirs the functions that create new files.
def main():
    os.chdir("C:/Users\harda\PycharmProjects\pythonProject\os")
    print(os.getcwd(), os.listdir())
    try:
        os.mkdir("Projeler")
        os.makedirs("Projeler/Python")
        time.sleep(2)
        print("Oluşturuldu.")
    except:
        sil_fun()
    sys.exit()

if __name__ == "__main__":
    main()
import sys import time import os #mkdir, #makedirs the functions that create new files. os.chdir("C:/Users\Buğra\PycharmProjects\python\os") print(os.getcwd(), os.listdir()) try: os.mkdir("Projeler") os.makedirs("Projeler/Python") time.sleep(2) print("Oluşturuldu.") except: sil = input("Dosya zaten mevcut. Silinmesini ister misiniz ? Y/N\n") for i in sil: if not i == "Y" or "N": print("Sadece Y ya da N girin.") if sil == "Y": os.removedirs("Projeler/Python") print("Silindi.") if sil == "N": print("Hayır dediğiniz için program kapandı.") continue sys.exit()

Python'da "{}" gibi parantezlerle gruplandırma olmuyor ise bir de şu kodu dener misin? "continue" en sonda olması gerek sanırım.
 
Denedim, maalesef çalışmadı. :/
 
Son düzenleme:
Python:
def sil_fun():
    sil = input("Dosya zaten mevcut. Silinmesini ister misiniz ? Y/N\n")
    if sil == "Y":
        os.removedirs("Projeler/Python")
        print("Silindi.")
    elif sil == "N":
        print("Hayır dediğiniz için program kapandı.")
    else:
        return sil_fun()

Böyle bir fonksiyon ekleyebilirsin üst tarafa. Except içine de sadece bu fonksiyonu çağırman yetecektir.

Tek bir karakter için neden for döngüsünde kontrol yaptığını anlayamadım doğrusu. Bütün hali aşağıdaki gibi:

Python:
import sys
import time
import os

def sil_fun():
    sil = input("Dosya zaten mevcut. Silinmesini ister misiniz ? Y/N\n")
    if sil == "Y":
        os.removedirs("Projeler/Python")
        print("Silindi.")
    elif sil == "N":
        print("Hayır dediğiniz için program kapandı.")
    else:
        return sil_fun()

#mkdir, #makedirs the functions that create new files.
def main():
    os.chdir("C:/Users\harda\PycharmProjects\pythonProject\os")
    print(os.getcwd(), os.listdir())
    try:
        os.mkdir("Projeler")
        os.makedirs("Projeler/Python")
        time.sleep(2)
        print("Oluşturuldu.")
    except:
        sil_fun()
    sys.exit()

if __name__ == "__main__":
    main()
 
Son düzenleme:
Çözüm
Hocam çok çok teşekkür ederim yeminle 2 saat kafayı yedim bilgisayar başında. Bir de "
if __name__ == "__main__":
main()
"
kod bloğu ne işe yarıyor acaba? Videolardan izleyerek öğreniyorum Python'u. Henüz karşıma çıkmadı böyle bir kod bloğu.
 
Python:
import sys
import time
import os

kabul = ["y","n","Y","N"]
#mkdir, #makedirs the functions that create new files.
os.chdir("C:/")
print(os.getcwd(), os.listdir())
try:
 os.mkdir("Projeler")
 os.makedirs("Projeler/Python")
 time.sleep(2)
 print("Oluşturuldu.")
except:
 while True:
    sil = input("Dosya zaten mevcut. Silinmesini ister misiniz ? Y/N")
    if sil not in kabul:
        print("Sadece Y ya da N girin.")
        continue
    elif sil == "Y":
        os.removedirs("Projeler/Python")
        print("Silindi.")
        print("İşlem Tamamlandı program kapandı")
        sys.exit()
    elif sil == "N":
        print("Hayır dediğiniz için program kapandı.")
        sys.exit()
 
Son düzenleme:
Şu kullanım yanlış bu arada bu kullanımın Türkçesi şudur;

Eğer i "Y" değilse veya "N" N ise.
Bu yüzden program her zaman bu satırı döndürür.
Yani if not i == "Y" or not "N" şeklinde bir kullanım mı gerekiyor onun için ?
Bu kodlar da çalıştı. Size de çok teşekkür ederim hocam.
 
Son düzenleme:
Yani if not i == "Y" or not "N" şeklinde bir kullanım mı gerekiyor onun için ?
Hayır,
Python:
A = "A"
B = "B"
a = "B"

if a == "A" or "BLABLA":
    print("OKEY1")
 
if a == "A" or a == "BLABLA":
    print("OKEY2")

Şunu çalıştır anlarsın.
Bir hatanı daha söyleyeyim continue bulunduğu döngüyü başa döndürür tüm kodu değil sen başa dönmesini istediğin kodu her zaman döngünün içine yazmalısın.

Python:
for harf in "HARFLER":
    if harf == "F":
        continue
    print(harf)
   
print("SON")
 
Son düzenleme:
Bir hatanı daha söyleyeyim continue bulunduğu döngüyü başa döndürür tüm kodu değil sen başa dönmesini istediğin kodu her zaman döngünün içine yazmalısın.
Nasıl yani dediğinizi tam anlayamadım. Yazdığım kodlar zaten döngüde değil miydi?
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…