Systemy liczbowe zamiana

0

x = int(raw_input('Podaj liczbe:'))
z = int(raw_input('Podaj system:'))
lista = []
helped = 0
while x:
    helped = x % z
    x = x/z
    if helped < 10:
        lista.append(helped)
    elif helped == 10: lista.append('A')
    elif helped == 11: lista.append('B')
    elif helped == 12: lista.append('C')
    elif helped == 13: lista.append('D')
    elif helped == 14: lista.append('E')
    elif helped == 15: lista.append('F')
    
print lista    
print lista.reverse()
 

WYNIK:

Podaj liczbe:50
Podaj system:2
[0, 1, 0, 0, 1, 1] # print lista
None # print lista.reverse()

dlaczego dla lista.reverse() wyswietla none ?

0

bo operacja "odwrócenia" jest wykonywana bezpośrednio na liście, lista.reverse() zawsze będzie zwracało none...

zamień to na:

lista.reverse()
print lista
0

faktycznie mój głupi błąd, wszystko działa :)

0

W wersji 3 konieczne są zmiany:

x = int(input('Podaj liczbe: '))
z = int(input('Podaj system: '))
lista = []
helped = 0
while x>0:
    helped = x % z
    x = x//z
    if helped < 10:
        lista.append(helped)
    elif helped == 10: lista.append('A')
    elif helped == 11: lista.append('B')
    elif helped == 12: lista.append('C')
    elif helped == 13: lista.append('D')
    elif helped == 14: lista.append('E')
    elif helped == 15: lista.append('F')

print(lista)
lista.reverse()
print(lista)
0

ewentualnie możesz to sobie skrócić:

x = int(raw_input('Podaj liczbe:'))
z = int(raw_input('Podaj system:'))

lista = []
helped = 0

while x:
    helped = x % z
    x = x/z
    if helped < 10:
        lista.append(helped)
    else:
        lista.append(chr(helped + 55))
 
lista.reverse()
print lista
0

Krócej i pewniej, nikt nie zauważył, że mieszacie liczby i stringi w tablicy:

def int_to_str(number, base):
    digits = []
    while number != 0:
        number, rem = divmod(number, base)
        digits.append(chr(rem + (ord('0') if rem < 10 else ord('A') - 10)))

    return ''.join(reversed(digits)) or '0'

@bo, Pythonem 3.x nie warto się na razie poważniej zajmować, będzie mieć znaczenie dopiero za kilka lat, rozwiązania z niego są backportowane do 2.x, zaś wsparcie ze strony frameworków i bibliotek, kolokwialnie mówiąc, leży (django nie supportuje, Pylons/Pyramid też nie, SQLAlchemy dopiero od bieżącego roku). Użycie operatora // jest w dobrym tonie i w linii 2.x zaś dostęp do print w formie funkcji można uzyskać poprzez from __future__ import print_function.

1 użytkowników online, w tym zalogowanych: 0, gości: 1