Python-zamiana systemu dziesiętnego na dowolny inny.

Ogólne pogawędki i dywagacje
paula.0120
Posty: 9
Rejestracja: śr mar 18, 2020 11:20 pm

Python-zamiana systemu dziesiętnego na dowolny inny.

Post autor: paula.0120 »

Napisz program, który po wczytaniu z klawiatury liczby naturalnej n, przedstawi ją w postaci binarnej.

Program ma być napisany w Pythonie.
Bardzo proszę o pomoc
Ostatnio zmieniony czw mar 19, 2020 12:42 am przez paula.0120, łącznie zmieniany 1 raz.
OpenOffice 3.1 na Windows
Jan_J
Posty: 4579
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Python-zamiana systemu dziesiętnego na dowolny inny.

Post autor: Jan_J »

Łał. Lubię takie pytania. Zadania są po to, żeby się czegoś przy nich nauczyć.

Czy zrobiłaś choć raz konwersję zapisu „na papierze”, by wiedzieć na czym ona polega? Czy wiesz, jakich operacji potrzebujesz, by „bez komputera” wykonać to zadanie?
Np. (13)_10 = (111)_3 = (16)_7 = (1101)_2

Kiedy się dowiesz, poszukaj, jakie działania na odpowiednich danych (jakich typów: string?, int?) realizują te operacje w Pythonie.

A może zanim się weźmiesz do Pythona, warto spróbować to samo zadanie rozwiązać w arkuszu kalkulacyjnym (np. w Calc)? Uniwersalność mniejsza, ale mniejszy też stres (jak rozumiem), a pożytek jakiś będzie ze zrozumienia. A potem Python.

Kiedy będzie coś przemyślane, poszukane, napisane, przyjdzie czas na przedstawienie tego, co się zrobiło, na opisanie tego, co nie wychodzi mimo prób (warto wskazać jakich, i co w nich nie wyszło), i na poszukiwanie pomocy. Wtedy szacunek i podpowiedź.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
paula.0120
Posty: 9
Rejestracja: śr mar 18, 2020 11:20 pm

Re: Python-zamiana systemu dziesiętnego na dowolny inny.

Post autor: paula.0120 »

Oczywiście, że rozpisywałam sobie to wszystko na kartce.

Zdefiniowałam wszystkie potrzebne funkcje typu push,pop itp.
I początek mam taki:
Ale gdzieś jest błąd i nie potrafię go znaleźć

Kod: Zaznacz cały

n = input('Podaj liczbe Naturalna: ')
d = input('Podaj liczbe z zakresu (1,10) : ')
s = stack(100)
x = int(n) / int(d) 
r = int(n) % int(d)     

Ostatnio zmieniony czw mar 19, 2020 10:27 am przez paula.0120, łącznie zmieniany 2 razy.
OpenOffice 3.1 na Windows
Jan_J
Posty: 4579
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Python-zamiana systemu dziesiętnego na dowolny inny.

Post autor: Jan_J »

Użycie mod i div, czyli % i // to dobry pomysł.
Użycie / to zły pomysł, w Pythonie dzielenie int / int daje ułamek zmiennopozycyjny (float).
Użycie round to efekt rozpaczy, spowodowanej pojawianiem się ułamków w /. W algorytmie dzielenia z resztą nie ma powodu, by stosować zaokrąglenia. Tym bardzej takie, które mają szansę pójść „w górę”.

Dlaczego nie zrobisz sobie n = int(input(czegoś tam)) i d = int(input(czegoś tam)), tylko za każdym dzieleniem wymuszasz konwersję?

Zrób sobie tabelkę dla jakiegoś przykładu, np. (13)_10 ==> (....)_2.

Kod: Zaznacz cały

n   n mod d
13 1
 6 0
 3 1
 1 1
 0
wynik: (1101)_2
i przełóż metodę jej wypełniania na pythoński.

Z tym że jak widzę zadanie `zamień podstawę z 10 na d` to nie jestem pewien, czy wolno mi używać wartości liczby n, czy tylko ciągu jej cyfr. Ale to zależy kto, dla kogo i po co postawił zadanie.

No i dowolna d < 10 to nie jest `dowolna inna d`.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
paula.0120
Posty: 9
Rejestracja: śr mar 18, 2020 11:20 pm

Re: Python-zamiana systemu dziesiętnego na dowolny inny.

Post autor: paula.0120 »

Już mi wszystko działa. Dziękuję :)
OpenOffice 3.1 na Windows
ODPOWIEDZ