Hata sonrası programı başa döndürmek

Python Hata verdiğinde baştan başlasın istiyorum. Bunun için yardımcı olabilecek varmı?

Merhaba.

Bunun için while döngüsü kullanacağız.

while True: #döngüye alma, işlem bitince/hata verince başa döner.
     try: #sürekli dene
          print("Tekrardan başlatıldı.")
          break
     except ValueError: #hata verirse
          print("Hata, başa dönüyorum.")

Bunu kodda nereye eklemem sağlıklı olur. Kusura bakmayın bu işte yeniyim

Bunu kodların en altına ekledim ancak başa dönmedi

Şu an yazdığınız tüm kodları try içerisine alın.

     try:
          # Kodlarınız
          break

sürekli kod hayası alıyorum.

1

try altındaki kodlar, try in içinde olduğu için; try in içindeki kodları try a bağlamak gerekiyor. try altındaki tüm kodların başına gelin ve TAB tuşuna basın.

Evet yaptım o sorun kayboldu ancak. Bu hatayı aldıktan sonra başa dönmüyor. Asıl sorunum buydu hocaM

Kodu tamamen atabilir misiniz? Böyle anlayamıyorum.

Hangi hatayı alıyorsanız, o hatayı except satırına eklemeniz lazım.
Mesela 3 elemanlı bir listenin 4. elemanını çağırmak istediğinizde IndexError alırsınız, bir sayıyı sıfıra bölmeye çalıştığınızda ZeroDivisionError alırsınız. Buna göre gerçekleşebileceğini düşündüğünüz hataları except satırına eklemelisiniz. Ayrıca başa dönmesinden kastınız bir py dosyasının en baştan çalışması ise farklı bir yol izlemeniz lazım. Mesela bir fonksiyonun baştan çalışmasını istiyorsanız şöyle bir örnek verelim.

def girdi_al():
    bolunen = int(input("Bölünen: "))
    bolen = int(input("Bölen: "))
    bolme_islemi(bolunen, bolen)

def bolme_islemi(bolunen, bolen):
    try:
        print(f"Sonuç: {bolunen / bolen}")
    except ZeroDivisionError:
        print("Bir sayıyı 0'a bölemezsiniz!")
        girdi_al()

girdi_al()
Bölünen: 20
Bölen: 0
Bir sayıyı 0'a bölemezsiniz!
Bölünen: 20
Bölen: 5
Sonuç: 4.0

Gördüğünüz gibi except bloğunda girdi_al() fonksiyonunu tekrar çağırdık.

Eğer ki bir py dosyasının tekrar çalışmasını istiyorsanız, o dosyayı import edebilirsiniz. (Şu anki dosyanın adı girdi_al_ve_bol)

def girdi_al():
    bolunen = int(input("Bölünen: "))
    bolen = int(input("Bölen: "))
    bolme_islemi(bolunen, bolen)

def bolme_islemi(bolunen, bolen):
    try:
        print(f"Sonuç: {bolunen / bolen}")
    except ZeroDivisionError:
        print("Bir sayıyı 0'a bölemezsiniz!")
        import girdi_al_ve_bol

girdi_al()
Bölünen: 20
Bölen: 0
Bir sayıyı 0'a bölemezsiniz!
Bölünen: 20
Bölen: 4
Sonuç: 5.0

Sizin göstermiş olduğunuz hata, cProtocolError
Sizin bu except satırına except cProtocolError şeklinde eklemeniz lazım onu. Eğer birden fazla hatayı eklemek istiyorsanız, her birini ayrı ayrı yapabilir veya tek satırda birleştirebilirsiniz.

except (Hata_1, Hata_2):
    # blabla
except Hata_1:
    # blabla
except Hata_2:
    # blabla
1 Beğeni

Sanırım yanlış anlatmışım hocam?

Yok hayır, döngülerle de yapılabilir elbette. Siz döngülerden bahsettiğiniz için ben farklı şekilde anlattım :smiley:

1 Beğeni
while True:
    s1="selam"
    try:
        print(a1)
        print(a2)#hata vericek kod
    except:
        print("hata alındı")
        continue # döngüyü en başa alır

2 Beğeni