Jump to content
Che

Cum continui o bucla for daca s-a intrerupt ?

Recommended Posts

Posted

Salut !

 

Nu m-am intrebat niciodata dar acum s-a intamplat ca am nevoie de asa ceva si nu stiu cum se face.

Sa zicem ca ai o bucla for in python:

for i in range (0, 200):

     # do something;

------------------------------------------------

Chestia este ca se intampla ca acel something sa nu aiba intotdeauna rezultatul dorit. => Si atunci e simplu: pui break si printezi i ca sa vezi ultimul i la care a ramas si sa-l bagi in variabila j.

Pe urma, ma gandesc ca pentru a relua for-ul nu trebuie decat sa faci asa:

for i in range (j, 200):

    # do something;

 

Intrebarea este cum se poate face ca sa continui loop-ul for de unde a ramas atunci cand a intervenit eroarea si s-a intrerut, daca i este un element dintr-o lista ?

ex.

mylist = ["mere", "pere", "capsuni", "banane", "piersici"]

for i in mylist:

     # do something

 

Sa zicem ca se intrerupe. Cum continui mai departe bucla for (fara sa o reiei de la capat !) ?

 

Multumesc mult !

Posted

Nu prea inteleg ce vrei sa faci. Pune codul concret sau exemplu complet. Ce reprezinta j?

Ai putea face o "ghidusie" punand for-ul intr-o functie cu parametru de $start pe care sa o apelezi in caz de fail. Dar repet, nu stiu daca este ceea ce cauti pentru ca nu inteleg exact ce vrei sa faci.

Posted (edited)
17 minutes ago, dancezar said:

try unde e posibil sa apara eroare, except continue?

Pai aici e chestia. Ca acel # do something inseamna de fapt ca accesez un url cu niste cookie-uri pe care eu i le dau de-a gata, in cURL. Am nevoie sa continui loop-ul fiindca, dupa un anumite numar de accesari (nu stiu cate), ma blocheaza si schimba acele cookies. Eu, cu ajutorul unui alt program, iau inapoi cookie si headere nou generate si le bag iarasi in python, cURL si continui iarasi accesarile, pana se blocheaza iar. De asta am nevoie sa continui exact de unde a ramas si nu cred ca pot face asta cu try pass except fiindca atunci cand se opreste trebuie sa intervin eu si sa iau noile cookies.

@Wav3 @tjt

Edited by Che
Posted (edited)

dar un if in acel for  nu merge?  gen daca nu apare acea eroare in valoare ta sa faca acel #do something. Sau dupa ce da valoare ... depinde caz, verifici valoare cu un if si sa faca sau sa nu faca mai departe in functie de valoare de care ai nevoie, sau sa genereze alt cookies daca e expirat sau nu e valid. 

Edited by jetus
  • Upvote 1
Posted (edited)

ceva basic:

 

file_changed = false

#load data from file

for x in ...:

   if blocked:

      while not file_changed:

           #check if file content changed

               # load new data
               # set file changed to false

               # set blocked to false
           time.sleep(1)

  #do stuff

  #when blocked set blocked to true and continue

 

Poti sa iti salvezi intr-un fisier datele de care ai nevoie.

 

 

 

 

  

Edited by tjt
  • Thanks 1
  • Upvote 1
Posted (edited)

Cred ca poti folosi un generator.
Ceri valorile cand ai nevoie de ele.

In caz de nu merge asa poti sa folosesti enumerate si sa salvezi indexul. Asa poti sa revii de unde erai in caz de esueaza (Evident, folosind un try block).

Edited by Turry
Posted (edited)

Foloseste o stiva: cand ai nevoie de element faci pop, cand iti da eroare faci push inapoi in stiva si ceri iar cookieuri, principiul lifo.

Mai poti folosi si queue, dar fifo e mai naspa.

Bafta!

Edited by gigiRoman
  • Thanks 1
Posted

Multumesc tuturor ! Pana la urma m-am gandit sa fac cum a zis @jetus si @tjt adica bag un if si daca nu am rezultatul dorit imi apare input sa ii dau noile cookies. Cel mai simplu !

Multumesc !

  • Upvote 1
Posted (edited)
14 hours ago, gigiRoman said:

De ce nu automatizezi cookieurile cu selenium?

Prea mult lucru manual strica.

Este vorba de un site protejat cu incapsula si selenium este detectat de verificarile lor ca are o variabila speicifca, din cate imi amintesc, care nu poate fi schimbata, de asta folosesc pycurl. 

Multumesc pentru sugestie !

Edited by Che

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...