Çö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
279
Çö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.
 
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
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()
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 ?
Kod:
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()
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:

Geri
Yukarı