Python For Döngüsünü Olduğu Yerde Devam Ettirme

Selamlar,

Aşağıda pratik olarak bir kod yazdım. Bir döngüm var. Listemdeki birimleri for döngüsüne tek tek sokuyorum. Fakat belli bir koşul sağlandığında döngünün aynı isimle baştan çalışmasını istiyorum.
Yani sıradaki isime geçmeden for döngüsünü tekrar çalıştıracağım.

Şimdiden teşekkürler…

isimler = ["ihsan", "ahmet", "yılmaz", "mehmet"]
for isim in isimler:
    if herhangibirkoşul:
        #aynı isim olacak şekilde döngüyü devam ettir

Merhaba, yanlış anlamazsanız size bir soru sormak istiyorum. Sıradaki isme geçmeden, aynı isimle tekrar tekrar ne yapmak istiyorsunuz?

Mesela aşağıdaki kodlarda sürekli bir değişkenle işlem yapılıyor. Döngünün içindeki diğer değişkenlere sıra gelemiyor.

import time

bos_liste = []


def f(isimler):
    for isim in isimler:
        if isim.startswith("i"):
            while True:
                print(bos_liste)
                bos_liste.append(isim)
                time.sleep(1)
                
            
_isimler = ["ihsan", "ahmet", "yılmaz", "mehmet"]
f(_isimler)

Aslında çok basit. Eğer koşul sağlanırsa döngü aynı isimle tekrar çalışacak. Koşul sağlanmayana kadar. Koşul sağlanmayınca sonraki isme geçilecek.

Döngüde başa dönmeye ne gerek var o zaman? Koşulu sağlayan değişken için, yapılması gereken işlemler alt alta yazılsa yeterli olmaz mı?

Aynen öyle ne gerek var döngüde başa dönmeye koşulu sağlayan değişken için yapılması gereken işlemler yazılsa olur.

Hocam programımda böyle bir durum mevcut. Tam olarak programı açıklayamayacağım fakat şu mantıkla anlatabilirim:
10 tane mail göndermek istiyorum mesela. Bu 10 mailin for döngüsü ile gitmesini sağlıyorum. Dördüncü mailde sorun çıktı gönderilemedi bu yüzden bu mailin tekrar göndermek için denenmesi gerekiyor.

Program bu şekilde değil fakat mantık bunun gibi.

Kütüphanelere aşina değili ama

şöyle bir şey yapabilirsiniz

for i in range(10):
     while True:
           try:
                maillist[i].sendmail() # salladım bilmiyorum smtp modülünü
                break
            except Exception as e:
                   print(e)
                   continue

Tam olarak cevabi yazamayacagim fakat su mantikla anlatabilirim:

for mail in mails:
    send_mail_with_retries(mail)

Ikinci opsiyon ise work queue kullanmak. Isleri bir queue’ya atip patlayanlari tekrar denenmek uzere queue’un sonuna atmak. Bozuklarin sagliklilari az bloke etmesi, paralellestirilebilme gibi sayisiz faydalari var.