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

Zamiana liczby dziesiętnej na szesnastkową

0 głosów
1,308 wizyt
pytanie zadane 10 maja 2020 w Python przez lenzo1 Początkujący (360 p.)

Witam. Napisałem kod, który zamienia liczbę dziesiętną na szesnatkową,ale mam problem z zamianą na znaki w sekcji programu opisanej komentarzem 

slownik={'A':10,'B':11,'C':12,'D':13,'E':14,'F':15}
liczba=42651
reszta=[]
i=0
while liczba!=0:
    reszta.append(liczba%16)
    liczba=int(liczba/16)
    i+=1
reszta.reverse()
#sprawdzenie tablicy
for j in range(len(reszta)):
    for wartosc in slownik:
        if wartosc==reszta[j]:
            reszta[j]=slownik.keys()
print(reszta)

Wcześniej zrobiłem ten program z wersją z kilkoma ifami jako sprawdzenie i działało,ale chciałbym zmodyfikować kod w oparciu o słownik. Proszę o poradę.

3 odpowiedzi

0 głosów
odpowiedź 10 maja 2020 przez Benek Szeryf (93,330 p.)

To ma być zrobione w ten sposób? A nie prościej użyć wbudowanego hexa?

liczba = 42651
hex(liczba) # '0xa69b'
komentarz 10 maja 2020 przez lenzo1 Początkujący (360 p.)
Wiem ,że istnieje taka opcja lecz chciałem to zrobić przy użyciu własnej funkcji.
0 głosów
odpowiedź 10 maja 2020 przez lenzo1 Początkujący (360 p.)

Znalazłem rozwiązanie. Trzeba było zamienić miejscami klucze i wartości i pozyskać je funkcją get.

slownik={10:'A',11:'B',12:'C',13:'D',14:'E',15:'F'}
liczba=42651
reszta=[]
i=0
while liczba!=0:
    reszta.append(liczba%16)
    liczba=int(liczba/16)
    i+=1
reszta.reverse()
#sprawdzenie tablicy
for j in range(len(reszta)):
    for wartosc in slownik:
        if wartosc==reszta[j]:
            reszta[j]=slownik.get(wartosc)
            break
print(reszta)

 

0 głosów
odpowiedź 10 maja 2020 przez Benek Szeryf (93,330 p.)

Znalazłem rozwiązanie. Trzeba było zamienić miejscami klucze i wartości i pozyskać je funkcją get.

Podwójna pętla for daje Ci już złożoność kwadratową. Przeanalizuj sobie taki kod:

def dec_to_hex(number):
    converter = {i:j for i,j in zip(range(10, 16), 'ABCDEF')}
    hex_repr = list()
    n, rest = divmod(number, 16)

    while n != 0:
        hex_repr.append(str(converter.get(rest) if rest in converter else rest))
        n, rest = divmod(n, 16)

    hex_repr.extend([str(converter.get(rest) if rest in converter else rest), 'x', '0'])

    return ''.join(reversed(hex_repr))

 

Podobne pytania

0 głosów
1 odpowiedź 1,594 wizyt
0 głosów
1 odpowiedź 9,387 wizyt
pytanie zadane 17 października 2016 w C i C++ przez kakola3 Początkujący (270 p.)
0 głosów
5 odpowiedzi 4,424 wizyt
pytanie zadane 14 maja 2016 w C i C++ przez Evelek Nałogowiec (28,960 p.)

93,631 zapytań

142,553 odpowiedzi

323,056 komentarzy

63,137 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2658p. - dia-Chann
  2. 2630p. - DziarnowskiJ
  3. 2478p. - rucin93
  4. 2361p. - Łukasz Piwowar
  5. 2340p. - CC PL
  6. 2317p. - raydeal
  7. 2300p. - Adrian Wieprzkowicz
  8. 2117p. - Łukasz Eckert
  9. 2082p. - Michal Drewniak
  10. 1957p. - Maurycy W
  11. 1885p. - robwarsz
  12. 1811p. - rafalszastok
  13. 1600p. - Rafał Trójniak
  14. 1588p. - Tomasz Bielak
  15. 1494p. - ssynowiec
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...