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