Çö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

Decapat
Katılım
28 Haziran 2021
Mesajlar
276
Çö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()
Nasıl yani dediğinizi tam anlayamadım. Yazdığım kodlar zaten döngüde değil miydi?

Hayır senin ilk kodundaki continue for döngüsünde sonraki değere atlamak için zaten tek karakter için kontrol yaptığından program zaten duracak. For her değeri kontrol etmek için değerleri sırasıyla alır. Yaptığın ilk kodda for döngüsü başına print(i) eklesen hatanı anlarsın.
input'a da HATALARIM diye bir şey gir.
 
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.
Programlar main fonksiyonundan yürütülür. Özellikle C/C++ gibi dillerde bunu rahatlıkla görebilirsin. Python için böyle bir belirtme zorunluluğu yok, sen şimdilik aşağıdaki gibi de çalıştırabilirsin.

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.
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()
 

Yeni konular

Geri
Yukarı