• 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

VPS Starter Arubacloud
0 głosów
6,757 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ź 217 wizyt
pytanie zadane 18 lutego 2017 w C i C++ przez JKluseczka Obywatel (1,430 p.)
0 głosów
2 odpowiedzi 1,898 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 5,610 wizyt
pytanie zadane 9 lutego 2016 w C i C++ przez sadurszczak Nowicjusz (150 p.)

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...