• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pętla w celu obliczenia średniego czasu wykonania programu

0 głosów
634 wizyt
pytanie zadane 7 czerwca 2020 w Python przez osobliwy nick Użytkownik (900 p.)

Cześć. Badam czas pracy algorytmu szyfrującego AES w Pythonie. Kod pochodzi z Internetu:

https://pastebin.com/Dg55KQCT

Dodałem do niego time.time() przed i po wywołaniu komendy, która odpowiada za szyfrowanie. Bo tylko czas szyfrowania mnie interesuje. Ale te czasy mocno się wahają. Żeby mieć jakiś obiektywizm chciałbym zmierzyć szyfrowanie tekstu powiedzmy 100 tys. razy. Ale jak to zrobić? Napisałem sobie taką pętlę:

start = time.time()
i=0
while i < 10
r = Rijndael("abcdefg1234567890123456789012345", block_size = 32)
ciphertext = r.encrypt("12345999999999999999999999954321")
i += 1
print (i)
end = time.time()


#print (plaintext,ciphertext)

a=end-start
print (a)

Ale nie działa. Powinno wykonać szyfrowanie 10 razy i za każdym razem wypisać "i", według mnie. Coś się oczywiście nie zgadza, nie wiem co.

Swoją drogą wracam do programowania po latach i szybko sobie przypomniałem dlaczego porzuciłem naukę programowania. Nie widzę tu logiki ani sensu. Jest pętla, jest funkcja. Z jakichś niezrozumiałych powodów się jednak nie wykonuje. Pomijam oczywiście, że cały kod mnie przerasta i nawet rozumiejąc algorytm AES, nie rozumiem kodu, ale nie muszę rozumieć, chcę zmierzyć tylko czasy.

1 odpowiedź

0 głosów
odpowiedź 8 czerwca 2020 przez VBService Ekspert (256,600 p.)
edycja 8 czerwca 2020 przez VBService

Zapomniałeś : wstawić po warunku dla while i zostawić wcięcie, dla kodu, który ma się wykonać w pętli

... Nie widzę tu logiki ani sensu. ...

Jak nie widzisz sensu, a skąd kompilator ma wiedzieć gdzie się kończy Twój warunek dla whilew wielu językach programowania są to nawiasy okrągłe np.: while(a==b), w python'ie jest to znak dwukropka, ... skąd kompilator ma wiedzieć jaka część kodu znajduje się w pętli, w wielu językach programowania wykorzystywane są do tego nawiasy klamrowe, potocznie nazywane "wąsami" wink  while(a==b)  { ... kod w pętli ... }, w python'ie używane są wcięcia (tabulacja). Python ze względu na taki zapis składni, jest czasem potocznie nazywany językiem "dla tych co lubią, dwukropki i wcięcia" wink 

1
komentarz 9 czerwca 2020 przez osobliwy nick Użytkownik (900 p.)
Dzięki, dopiero zaczynam z Pythonem i nawet nie wiedziałem, że te wcięcia i dwukropki są potrzebne. Przyjąłem, że zamiast dwukropka wystarczy enter, a to co w pętli jest też do czasu następnego entera...

Podobne pytania

+1 głos
1 odpowiedź 251 wizyt
0 głosów
1 odpowiedź 625 wizyt
pytanie zadane 6 listopada 2022 w Python przez Matlane Użytkownik (560 p.)
0 głosów
2 odpowiedzi 461 wizyt
pytanie zadane 17 lipca 2020 w C# przez Jakub Michalik Użytkownik (850 p.)

93,631 zapytań

142,555 odpowiedzi

323,056 komentarzy

63,139 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2900p. - dia-Chann
  2. 2870p. - DziarnowskiJ
  3. 2827p. - Łukasz Piwowar
  4. 2783p. - raydeal
  5. 2758p. - Adrian Wieprzkowicz
  6. 2713p. - rucin93
  7. 2579p. - Łukasz Eckert
  8. 2523p. - Maurycy W
  9. 2459p. - CC PL
  10. 2082p. - Michal Drewniak
  11. 1885p. - robwarsz
  12. 1851p. - Mariusz Fornal
  13. 1811p. - rafalszastok
  14. 1600p. - Rafał Trójniak
  15. 1588p. - Tomasz Bielak
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...