p.....k
p.....k
#naukaprogramowania #python

bin_list = []
for num in numbers:
bin_list.append(bin(num)[2:])

for num in bin_list:
while len(num) % 7 != 0:
num.zfill(len(num)+1)

mam coś takiego, i chcę wypełniać zerami każdy element listy aż % 7 == 0...
jakoś nie mogę ogarnąć tego num w funkcji for...
  • Najlepsze
  • Wszystkie komentarze
lionbest
@ponuryrolnik: jezu coś ty sie tego zfill tak uczepił , wystarczy ci num = "0" + num.
A jak tak bardzo chcesz skorzystać z zfill, to pomyśl do wielkości chcesz go rozszeżyć?

lionbest
lionbest
  • adult
1
Treść przeznaczona dla osób powyżej 18 roku życia...
p.....k
p.....k
@lionbest: zgadza się, myślenie generalnie boli
joolekk
joolekk
@lionbest: masz rację.
Ale nie powinna boleć nikogo, kto chce programować ;)
@ponuryrolnik:
p.....k
p.....k
@joolekk: chyba, że ktoś lubi ból
joolekk
joolekk
@ponuryrolnik: to już osobna historia
lionbest
@ponuryrolnik: Jeżeli chce się uzyskać większą liczbę od danej, podzielną przez jakąś inną to właśnie zawsze się wykorzystuje ten wzór:

(liczba + dzielna - 1) // dzielna * dzielna
Czyli zwiększasz liczbę o jeden mniej niż dzielna i dzielisz bez reszty, następnie mnożysz, żeby uzyskać wynik podzielny przez tę liczbę.
p.....k
p.....k
@lionbest: https://repl.it/repls/SimplisticSteelKeygen

może być?

tylko tu mi zawsze radzono, żeby ładować wszystko do 1 linijki
joolekk
joolekk
while len(num) % 7 != 0:


@ponuryrolnik: po co to? skoro num będzie inną wartością w każdym przebiegu pętli, to po co robić pętlę z warunkiem od długości tego elementu?
l.....k
l.....k
while len(num) % 7 != 0


@ponuryrolnik: czyli jak masz np 6 > bin "110" >chcesz by z przodu było dodatkowe 4 zera, by ilość znaków była 7 w sumie? co daje 0000110
p.....k
p.....k
@joolekk: żeby wypełniało zerami, aż będzie podzielny przez 7 bez reszty
p.....k
p.....k
@luukasek: no tak
l.....k
l.....k
joolekk
joolekk
@ponuryrolnik: nie potrzeba pętli - @lionbest podpowiedział dobrze

matematyka nie boli ;)
p.....k
p.....k
@lionbest:

for num in bin_list:
while len(num) % 7 != 0:
num = "0" + num

potem obczaje
lionbest
@ponuryrolnik: Co X-D
No to se dodaj po pętli for dodawanie do listy.
Tylko musisz się nauczyć ogarniać te wcięcia, bo chyba to ci sprawdza wielki problem. Powinno być na tym samym poziomie co słowo for z drugiej pętli, która powinna być na poziomie tego bin_list.append

W ogóle to jak chcesz dawać przykłady ludziom na wypoku, to użyj takiego https://repl.it/ albo chociaż pastebina.
p.....k
p.....k
@lionbest: dziwne, zrobiłem nową pustą listę i dodałem do niej - działa. ale jak próbuję dodać do tej bieżącej to wpada w pętlę bez końca... no i na poziomie while musi być, bo inaczej dodaje tylko jedną liczbę... no tak, bo przecież zwiększa się o jeden itd... czyli może jakieś replace()
p.....k
p.....k
@luukasek: ten format() coś chce działać tylko na gotowym stringu, w sensie:
liczba = bin(1231232)
nowa = format(14, liczba)
wywala się, albo coś źle wpisuje
p.....k
p.....k
@lionbest: władowałem wszystko do jednej linijki:

bin_list = [num.zfill((len(num)+6)//7*7) for num in [bin(num)[2:] for num in numbers]]