Iteracja liczb całkowitych modulo

0

Witam,
mam problem z kodem:

index = 1
counterUp += 1 # licznik
Suma = counter + index  

if Suma <= (5-index):  
    zrób coś
else:
    counter = 0
    index = 0
    zrób coś

fragment kodu z metody gdzie klikając przycisk next struję wynikami.

  1. wyniki z 1 iteracji (do 1go if =Flase) są ok, potem mam problem.

    kliknąłem z zdjęcie nr:  1 licznik:  1 nastepny krok:  2
    kliknąłem z zdjęcie nr:  1 licznik:  2 nastepny krok:  3
    kliknąłem z zdjęcie nr:  1 licznik:  3 nastepny krok:  4
    

    mając kliknięte zdjęcie nr.1 przy "next" licznik zwiększa się o 1 wybiera index 2 podstawia 2 do listy i wyświetla zdjęcie na indexie 2 itd. to jest ok problemy mam dalej.

  2. kliknąłem z zdjęcie nr:  0 licznik:  0 nastepny krok:  5
    kliknąłem z zdjęcie nr:  1 licznik:  1 nastepny krok:  2
    kliknąłem z zdjęcie nr:  1 licznik:  2 nastepny krok:  3
    kliknąłem z zdjęcie nr:  1 licznik:  3 nastepny krok:  4
    kliknąłem z zdjęcie nr:  0 licznik:  0 nastepny krok:  5
    kliknąłem z zdjęcie nr:  1 licznik:  1 nastepny krok:  2
    

    ponieważ. licznik się zeruje gdy if = False, index się wyzerował zdjęcia i jest ok (to jest kołowrotek czy to ma być od nowa przeglądanie zdjęć w kat) i już ten index powinien być dalej zero bo już nie interesuje mnie na które zdjęcie kliknął użytkownik (to jest tylko ważne w 1 kroku), ale w następnej iteracji index wrócił na pozycję 1 :/ oraz index'y szaleją, powinny być dla 5ciu zdjęć być [0, 1, 2, 3, 4] a mam jakąś 5tkę, nie ma 0, 1 .. pogubiłem się, czy może ktoś mi pomóc naprawić ten fragment kodu.

Jeszcze licznik powinien liczyć do 4 w tym przypadku a nie do 3.

Z góry dziękuję za pomoc :)

1

spróbuj użyć reszty z dzielenia. Coś w tym stylu:

count = 10 # ile ma być tych obrazków do zmiany
index = 1
# linijka nizej i to ze jest tam range(30) jest nieistotne, chodzi o to zeby pokazac, ze sie moze wywolac iles razy
for i in range(30): 
	print(index)	
	index = (index + 1) % count 
0
LukeJL napisał(a):

spróbuj użyć reszty z dzielenia. Coś w tym stylu:

count = 10 # ile ma być tych obrazków do zmiany
index = 1
# linijka nizej i to ze jest tam range(30) jest nieistotne, chodzi o to zeby pokazac, ze sie moze wywolac iles razy
for i in range(30): 
	print(index)	
	index = (index + 1) % count 

@LukeJL: Thx, muszę to przemyśleć, z premedytacją nie podchodziłem do FOR ponieważ on mi generuje "wszytko na raz", zaś if działa wtedy gdy jest zdarzenie na myszce "klik", ponadto muszę filtrować od którego zdjęcia mam pokazywać, czyli jak mam n zdjęć w zbiorze i użytkownik kliknie np. 3 to muszę pokazać przy "next" 4 i tak do końca zbioru, potem jak się przeładuje lub nie będzie innego wyboru zdjęcia to wszytko jedno. Ale bardzo dziękuję za wskazówkę. Przyjrzę się temu rozwiązaniu.

2

ale chodzi po prostu o tę linijkę:

index = (index + 1) % count 

czyli za każdym razem liczysz resztę z dzielenia, żeby zapewnić, że indeksy będą od 0 do count - 1.
do tego nie trzeba pętli for, możesz sobie napisać funkcję, która tylko to robi.

alternatywnie możesz sprawdzać warunek:

index += 1
if index >= count: 
   index = 0
0

@LukeJL: faktycznie, dziękuję za pomoc :)

0
count=10
for i in range(30): 
	print((i+1)%count)	

1 użytkowników online, w tym zalogowanych: 0, gości: 1