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
@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
@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).
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:
@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)
@jupino: tam jest podkreślenie po ip. inta na kawałki można podzielić np. przy pomocy przesunięć, ale domyślam się, że prowadzący rozmowę chciał mieć (przesyłać) human readable postać.
Czy możecie mi napisać prosty test jednostkowy powyzszego generatora bez uzycia frameworkow testowych czyli z uzyciem asercji?


@jupino: a tutaj to trzeba assertować po prostu warunki poprawności (4 inty odzielone kropkami, 0< x <255) czy jakoś inaczej?