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

zamiana liczb binarnych na dziesiętne

0 głosów
9,569 wizyt
pytanie zadane 21 października 2016 w Python przez edwin20 Początkujący (370 p.)

Witam, napisałem taki oto kod. Według mnie powinno wszystko działać a nie działa. Proszę o pomoc.

 

import math
bin=input("Podaj liczbę binarna")
dzie=int(0)
for i in range(0, len(bin)):
    #print (bin[i])
    if bin[i] == 1:
        dzie = dzie + math.pow(2,int(i))
    else:
        continue
print(dzie)

 

1 odpowiedź

+1 głos
odpowiedź 21 października 2016 przez Szykem2 Nałogowiec (29,510 p.)
Dwa błędy: wynikiem jest 0 ponieważ bin[i] jest stringiem a nie intem (1 == '1') zawsze zwróci False. Dodaj cudzysłowia i warunek będzie spełniany. Drugim błędem jest to, że Iterujesz od złej stony i będą wychodzić bzdury:

Jeśli mamy liczbę 1101 to liczymy na dziesiętne w sposób 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 13.

Twój algorytm liczy to w sposób: 1*2^0 + 1*2^1 + 0*2^2 + 1*2^3 = 11.
komentarz 22 października 2016 przez edwin20 Początkujący (370 p.)
Dzięki, jak naprawić iterowanie? Aby iterowało od końca?
komentarz 22 października 2016 przez Szykem2 Nałogowiec (29,510 p.)
for i in reversed(range(size))

Nazwa mówi sama za siebie.

komentarz 22 października 2016 przez edwin20 Początkujący (370 p.)
import math
bin=input("Podaj liczbę binarna")
dzie=int(0)
for i in reversed(range(len(bin),0)):
    if bin[i] == "1":
        dzie = dzie + math.pow(2,int(i))
    else:
        continue
print(dzie)

Gdy zamienię w pętli for, len(bin) i zero miejscami. To dalej liczy od 0, czyli iteruje normlanie. O co może chodzić?

komentarz 22 października 2016 przez Szykem2 Nałogowiec (29,510 p.)
Jeśli w range pierwszy argument jest większy od drugiego to zwraca pusty generator czyli pętla nie będzie miała po czym iterować.

Podobne pytania

0 głosów
1 odpowiedź 373 wizyt
pytanie zadane 18 lutego 2017 w C i C++ przez JKluseczka Obywatel (1,430 p.)
0 głosów
2 odpowiedzi 2,657 wizyt
pytanie zadane 12 października 2016 w Rozwój zawodowy, nauka, praca przez Kapi2222 Obywatel (1,220 p.)
0 głosów
2 odpowiedzi 6,724 wizyt
pytanie zadane 9 lutego 2016 w C i C++ przez sadurszczak Nowicjusz (150 p.)

93,741 zapytań

142,677 odpowiedzi

323,294 komentarzy

63,325 pasjonatów

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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...