Permalänk
Medlem

Python, loop-relaterat

Har försökt googlat lite men inte hittat något(googlar på fel sak förmodligen..) så provar lyckan här.
Kör i Python3 om det spelar någon roll på debian.

Låt säga att jag har en for-loop(finns kanske andra alternativ som är bättre) som går mellan 0-10000. Om jag vill att något händer med intervall hur gör jag då smidigast? Låt oss säga att jag vill att något händer var 10:e "steg", en annan var 18:e "steg" och en tredje var 48:e "steg". Skriver lite kod nedan som demonstrerar hur jag tänkt.

For i in range(0,10000): if i == 10,20,30.....n: print("Jag händer var 10:e steg") if i == 18,36,54.....n: print("Jag händer var 18:e steg") if i == 48,96,144.....n: print("Jag händer var 48:e steg")

Har tänkt att det kanske går att lösa med rest/mängd och en if men kanske finns ett elegantare sätt att lösa det på?
d.v.s om i/X lämnar en rest på 0 så utförs mina print där X är 10,18,48.

Självklart vill jag i lösningen kunna ha valfri loopstorlek samt valfria "steg".

Tack på förhand!

Permalänk
Medlem

Använd modulusoperatorn (%) för att få ut rest. ex: 500 % 7 (= 3)

Visa signatur

Spela Swemantle! Du vet att du vill.

Ibland har jag fel, men då är det någon annans fel.

Permalänk
Medlem

Enklast är nog att använda modulo-operatorn (%). Där du kan utvärdera exempelvis följande: "i % 10 == 0". Vilket kommer vara sant var tionde nummer.

Skickades från m.sweclockers.com

Visa signatur

..:: RiJo ::..
Computer: Lenovo X300
Platform: Gentoo

Permalänk

Hej!

Kanske inte förstår exakt vad du är ute efter. Men det låter som om du vill ha någon form av periodicitet.

http://stackoverflow.com/questions/8600161/executing-periodic...
Kan det här vara något som uppfyller dina mål? Med denna lösningen kan du skapa tre eller fler trådar som gör en action med olika intervall. Dock tänk på att intervallet kan drift om timer startas i slutet.

Visa signatur

Speldator: | Intel i7 2600k @ 4.2GHz | Corsair 16GB | 2xGTX 470 SLI | Asrock Extreme4 | SSD Intel G2 80GB |

Permalänk
Medlem

Tackar för svar! Då var det som jag var inne på med att använda sig utav rest.
@Mr_.Anderssons Är inte tidsmässigt intervall jag är intresserad utav utan ett stegmässigt d.v.s att var tionde A så händer B. Var 46 A så händer C om du förstår

Använder mig då av

for i in range(0,100000) if i % X == 0 : print("Detta sker på steg X") if i % Y == 0 : print("Detta sker på steg Y")