Wpis z mikrobloga

Czy mógłby ktoś mi wytłumaczyć dwie rzeczy z #programowanie w #python?

1
Jak wygląda np. prosty generator adresów ip, powiedzmy zeby bylo ich 1000, a wywolanie generatora wygladaloby tak:
for ip in ipgenerator():
print ip

2
Czy możecie mi napisać prosty test jednostkowy powyzszego generatora bez uzycia frameworkow testowych czyli z uzyciem asercji?

Proszę o takie zwięzłe odpowiedzi zawierające sam kod.
Wyzywanie mnie od zielonek albo komentarze niezwiązane z tematem będę usuwał.
Będę natomiast bardzo wdzięczny za wszelką pomoc w zrozumieniu tych dwóch kwestii o które pytam.
Wiem conieco jak podejść do tych kwestii, ale pytam profesjonalistów - proszę o wypowiedź osoby które naprawdę wiedzą co robią i piszą profesjonalnie w pythonie - nie pytam osób z małym stażem i słabą znajomością pythona, proszę również nie przeklejać wstawek ze stackoverflow itp.

Są to pytania jakie miałem na rekrutacji i ciekaw jestem profesjonalnego rozwiązania - schludnego i krótkiego.

Dziękuję.
  • 27
  • Odpowiedz
@jupino: Masz bez wcięć bo jesteś niezbyt uprzejmy ze swoimi pytaniami xD
import random

def ipgenerator():
ips = []
for x in xrange(1000):
ips.append(".".join(map(str, (random.randint(0, 255) for _ in range(4)))))
return ips
  • Odpowiedz
@jupino: To jest zakres IP, można oczywiście zapisać: (".".join(map(str, (random.randint(0, 255) for _ in range(4))))) ale to chyba nie to jest najistotniejsze (już nie wspominając o tym, że 10 na 1000 to chyba sam zamienisz, to Ty szukasz pracy).
  • Odpowiedz
Generalnie tak to może, a nawet powinno wyglądać:
from random import randint

def ipgenerator():
----for x in range(1000):
--------yield (".".join(map(str, (randint(0, 255) for _ in range(4)))))

for ip in ipgenerator:
----print ip

dziękuję za udział w dyskusji i cenne wypowiedzi
@piotrb: @luqu: @Injection: @MrOsamaful:
  • Odpowiedz
@jupino: jeszcze się zaczepię z tym IP (przesyłać się powinno jedną 32-bitową liczbę):

from random import randint
from ipaddress import ipaddress
def ipgen():
__for i in range(10):
______yield str(ipaddress(randint(0,4294967295)))

for i in ipgen():
____print(i)
  • Odpowiedz