Konvertieren Sie die Dezimalzahl in n-ary [Python]

zunaechst

・ Da auch Anfänger lernen, würde ich mich über Ihre Anleitung freuen. ・ Am Anfang gibt es eine Erklärung für n-ary Zahlen, sodass diejenigen, die es kennen, es nicht lesen müssen.

Was ist eine Dezimalzahl?

In unserer Welt beschäftigen wir uns grundsätzlich mit Zahlen mit dem Konzept der Dezimalzahlen. Zum Beispiel Die Nummer 1234 ist ... + 10000 * 0 + 1000 * 1 + 100 * 2 + 10 * 3 + 1 * 4 Dies bedeutet, dass [1,10,100,1000,10000, ......] weggelassen wird, was ein Leistungsmultiplikator von 10 ist. (Obwohl die führende 0 weggelassen wird)

Wenn Sie "1234" in "Kanji" schreiben, stellt dies eine Zahl dar, ohne diese Abkürzung im Miso wegzulassen

Es ist mühsam, 1.224 zu schreiben, nicht wahr? (Ich bin es leid zu sehen)

Ich denke, dass das Schreiben durch Weglassen des Potenzmultiplikators von 10 eine der großen Erfindungen in der Geschichte der Mathematik ist. (Einsteins Abkürzung wird auch als die beste Erfindung bezeichnet, die Einstein hinterlassen hat, und die zu bequeme Abkürzung ist erstaunlich (kleines Durchschnittsgefühl))

Was ist eine Zahl?

Aber im Laufe der Mathematik begannen Mathematiker, Romantik in der Verallgemeinerung zu suchen (ich glaube nicht, dass Romantik dies tut). Sie haben darüber nachgedacht, diese Notation zu verallgemeinern. Was ist, wenn wir die Potenz von n anstelle der Potenz von 10 weglassen? Das ist das Konzept der n-fachen Zahlen.

n-ary Regel

Erstens sind die Grundregeln dieselben wie in der Dezimalwelt. Es gibt jedoch Regeln, die Sie möglicherweise nicht kennen. das ist "Die Potenz des n-Koeffizienten muss kleiner als n sein." etwas wie. In der binären Welt Wenn man an eine * 4 denkt Wenn a = 3 (2+1)*4 = 8 + 1 * 4 und 8 erscheinen, richtig? Dies hat die Bedeutung von tragen. Ich weiß, ob es in der Mitte der Berechnung einen Übertrag gibt Ich mag es nicht, die Notation weiterzumachen. Natürlich kann es eine Notation geben, die das Tragen erlaubt, aber wenn das Tragen erlaubt ist, wird die Nummernnotation nicht eindeutig bestimmt (es gibt zwei oder mehr).

Zum Beispiel, wenn die Zahl 9 in binärer Notation ist Da es 1 * 8 + 0 * 4 + 0 * 2 + 1 * 1 ist, kann es als 1001 geschrieben werden. Wenn Sie jedoch das Tragen zulassen 08+14+22+11=121 2 ist in dieser Welt als 10 geschrieben 121 = 1 (10) 1 und der Schreibstil unterscheidet sich von 1001 und 9 wird auf zwei Arten ausgedrückt. Natürlich können wir eine Welt der Mathematik schaffen, die dies zugibt, Verwenden wir diese Bedingung, da sie nur durch Setzen von "Der Koeffizient ist kleiner als n" eindeutig bestimmt wird. Weil das bequemer ist. (Ich habe nicht darüber nachgedacht, aber es wäre ärgerlich, wenn ich mich mit gut definierten Themen beschäftigen würde)

Programm Beschreibung

Ich werde ein Programm erstellen, um es in eine Basiszahl meiner Wahl umzuwandeln, aber dieses Mal werde ich jeden Koeffizienten als Liste zurückgeben. Der Grund ist, dass Sie beim Konvertieren in 100 Basis den Koeffizienten 87 leicht sehen können. Mit konkreteren Beispielen erklären "8765" ist in 100-facher Notation Es wird (87) (65). ((87) wird eine einstellige Zahl) Es ist jedoch schwer zu sehen, daher werde ich es als [87,65] in die Liste schreiben. Die Bedeutung ist 87 * 100 + 65 * 1.

Programmablauf

Geben Sie zunächst die Zahl, die Sie konvertieren möchten, dezimal ein und bitten Sie sie, die Zahl einzugeben, die Sie konvertieren möchten.

N=int(input())#Der Dezimalwert, den Sie konvertieren möchten
K=int(input())#Basisnummer

Oh, ich werde es zu einer Funktion machen

def change(N,shinsu):

Und wir werden die Liste für die Rückkehr vorbereiten. Die Anzahl der Stellen nach der Konvertierung ist leicht zu ermitteln. Ermitteln Sie daher zuerst die Anzahl der Stellen

    keta=0
    for i in range(10**9):
        if N<shinsu**i:
             keta+=i
             break

Jetzt kennen Sie die Anzahl der Stellen nach der Konvertierung. Mit anderen Worten, nachdem wir die Größe der zurückzugebenden Liste kennen, werden wir die Liste vorbereiten.

    ans=[0]*keta

Sie müssen lediglich den K ^ x-Koeffizienten von Anfang an ermitteln.

    for i in range(1,keta+1):
        j=N//(shinsu**(keta-i))
        ans[check]=j
        check+=1
        N-=(j)*(shinsu**(keta-i))

Wenn Sie es am Ende zurückgeben, sind Sie fertig

    return ans

Um es zusammenzusetzen

N=int(input())#Der Dezimalwert, den Sie konvertieren möchten
K=int(input())#Basisnummer

def change(N,shinsu):
    keta=0
    for i in range(10**9):
        if N<shinsu**i:
             keta+=i
             break
    ans=[0]*keta
    check=0
    for i in range(1,keta+1):
        j=N//(shinsu**(keta-i))
        ans[check]=j
        check+=1
        N-=(j)*(shinsu**(keta-i))
    return ans

print(change(N,K))

Dies ist abgeschlossen!

Ich habe versucht zu spielen

1023
2
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
9765624
5
[4, 4, 4, 4, 4, 4, 4, 4, 4, 4]
2853116705
11
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Von n-ary bis dezimal

Wenn Sie dagegen eine Liste mit n-fachen Zahlen erhalten, erstellen Sie eine Funktion, die die Dezimalzahlen wiederherstellt.

def henkan(list,shinsu):
    l=len(list)
    ans=0
    for i in range(1,l+1):
        ans+=list[-i]*(shinsu**(i-1))
    return ans

Zusammenfassung

Es fiel mir persönlich schwer, Hexadezimalzahlen mit A, B, C, D, E und F auszudrücken, also habe ich sie erstellt. Es ist eine Funktion, die ich in der Praxis des Programms gemacht habe, und es ist ganz meine Lieblingsfunktion. Vielen Dank für Ihre Anleitung und Ermutigung> <

Recommended Posts

Konvertieren Sie die Dezimalzahl in n-ary [Python]
python, php, ruby Konvertieren von Dezimalzahlen in n
[Python] Konvertieren Sie Dezimalzahlen in Binär-, Oktal- und Hexadezimalzahlen
[Python] Konvertiert natürliche Zahlen in Ordnungszahlen
Ich habe versucht, ein Programm zu erstellen, das Hexadezimalzahlen mit Python in Dezimalzahlen konvertiert
[Python] Datum in Zeichenfolge konvertieren
Konvertieren Sie numpy int64 in python int
[Python] Liste in Pandas konvertieren [Pandas]
[Python] Konvertieren Sie Shift_JIS in UTF-8
Konvertieren Sie die IP-Adresse in eine Dezimalzahl
Konvertieren Sie Python 3.x-Code in Python 2.x.
Konvertieren Sie die Netzmaske der CIDR-Notation in Python in eine gepunktete Dezimalschreibweise
So konvertieren Sie Gleitkommazahlen in Python in Binärzahlen
Konvertieren Sie Markdown in Python in PDF
Konvertieren Sie die Liste mit Python in DataFrame
Python> Liste> Doppelte Liste in einfache Liste konvertieren
Python> Tupel> Konvertiert doppeltes Tupel in einzelnes Tupel
[Python] Ändere das Alphabet in eine Zahl
Konvertieren Sie Memos sofort mit Python 2to3
Konvertieren Sie Python> Zwei-Wert-Sequenz in Wörterbuch
[Python] So zeigen Sie Zufallszahlen an (Zufallsmodul)
[Python] So konvertieren Sie eine zweidimensionale Liste in eine eindimensionale Liste
So konvertieren Sie Python in eine exe-Datei
[Python] Konvertieren Sie CSV-Dateibegrenzer in Tabulatortrennzeichen
Konvertiere Hiragana mit Python (Beta) in Romaji
Konvertieren Sie von Katakana zu Vokal Kana [Python]
Python> Tupel in Liste konvertieren> aList = Liste (pi_tuple)
Konvertieren Sie den Python-Datumstyp in das RFC822-Format
Python> Ausgaben von 1 bis 100, 501 bis 600> Für CSV
Konvertieren Sie chinesische Zahlen mit Python in arabische Zahlen
In Python von Markdown in HTML konvertieren
Konvertieren Sie die absolute URL in eine relative URL in Python
Beispiel für die Wavelet-Konvertierung von Bildern in Python
Auf Python 2.7.9 aktualisiert
Zum HSV konvertieren
"Backport" zu Python 2
Konvertieren Sie die FBX-Datei in Python in ASCII <-> BINARY
Konvertieren Sie PDF in Bilder (JPEG / PNG) mit Python
Konvertieren Sie die "Anzahl" des Excel-Datums in die Python-Datumszeit
Konvertieren Sie PDFs mit Python in Massenbilder
Python-Skript zum Konvertieren von Breiten- und Längengrad in Mesh-Code
[Python] Konvertieren von DICOM in PNG oder CSV
Konvertieren Sie die SVG-Datei mit Python in png / ico
Konvertieren Sie Windows-Epochenwerte mit Python in das Datum
Konvertieren Sie STL mit Python VTK in ein Voxel-Netz
Konvertieren Sie den exponentiellen Float in Python in str
Konvertieren Sie kubischen Netzcode in Python in WKT
Konvertieren Sie die Zeichenfolge mit Python in ein zeichenweises Listenformat
Konvertieren Sie Datum und Uhrzeit in Zeitzonen in Unixtime in Python2.7
Konvertieren Sie die JPYTER-Notebook-IPynb-Datei in die ausführbare Python-Py-Datei
Python-Übung Konvertieren Sie den eingegebenen westlichen Kalender in einen japanischen Kalender
So konvertieren / wiederherstellen Sie einen String mit [] in Python
So konvertieren Sie den Python # -Typ für Super-Anfänger von Python: str
Konvertieren Sie das Slice-Objekt in eine Liste mit Indexnummern
So installieren Sie Python
[Python] Konvertieren Sie Allzweckcontainer und Klasse ineinander
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Änderungen von Python 3.0 zu Python 3.5