Sehr geehrter Herr Schnoor,
ich eröffne einen neuen Diskussionsstrang, erstens, weil ich es leid bin, für
die Antwort immer so weit runter zu scrollen, und zweitens, weil es
tatsächlich, wie von Ihnen versprochen, neue Ergebnisse bzw. neue Entwicklungen
in der Konzeption des 4096-Zahlensystems gibt.
Ich weiß zwar nicht, die wievielte Ihrer Erstversionen der <ziffern>String ist,
den Sie uns kürzlich hier vertrauensvoll zur Kenntnis gebracht haben. Denn Sie
pflegen Ihre Programmversionen (jedenfalls die mir bekannten) nicht zu
nummerieren -- wie das Unicode-Konsortium seine verdammten Unicode- bzw. die
UTF8-Zeichen.
Doch nun zur Sache:
In der mir heute per Mail zugeschickten zip-Datei findet sich tatsächlich ein
ziffern-String, der keine Mehrfachzeichen enthält -- jedenfalls keine
druckbaren. Wohl die beiden alten Verbrecher NewLine und Space (mit den
Ordnungszahl 10 und 32. Sind zwar olle Dezies, aber sie erfüllen ihren Zweck,
genauso wie die Hexies):
[ 1] >
< 10 Cc
[ 2] > < 32 SPACE
Cc : 1
SPACE : 1
Darum lüfte ich hier das Geheimnis, wie man bei einem mit diesen Übeltätern
verseuchten Mehrzeilenstring
MZS = '''Zeile1
Zeile2
Zeile3'''
diese white-space-Zeichen los werden kann:
(1) Man hängt einfach ans Ende des MZS die String-Methode str.replace() dran:
MZS = '''Zeile1
Zeile2
Zeile3'''.replace('\n', '').replace(' ', '')
Info: https://docs.python.org/3/library/stdtypes.html#string-methods
str.replace(old, new[, count])
Return a copy of the string with all occurrences of substring old replaced by
new. If the optional argument count is given, only the first count occurrences
are replaced.
Es gibt allerdings WIEDER das alte Problem: Durch die Tilgung dieser Bösewichte
ist der Ziffernstring geschrumpft, er hat jetzt nur noch 4038 Zeichen.
basis = len(ziffern)
print("Basis : %s" % basis)
ziffern = ziffern.replace('\n', '').replace(' ', '')
basis = len(ziffern) # bloß 4038 Zeichen
print("Basis : %s" % basis)
Basis : 4096
Basis : 4038
Also Hausaufgabe: Nachbessern
(2) Herr Schnoor, Sie haben jahrelang eine andere Methode verwendet, um Ihre
überlangen Strings zu erschaffen, nämlich diese:
t1 = "Stück1"
t2 = "Stück2"
usw.
t66 = "Stück66"
t = t1 + t2 + ... + t66
Wären Sie bei dieser Methode geblieben, könnten wir jetzt (fast) einen neuen
Diskussionstrang Keyboard-Coding 3 eröffnen, denn dann hätte man einen allen
Anforderungen an ein solches Gebilde genügendes Exemplar (sofern lang genug).
Aber mit wenig Aufwand können Sie die alte, jahrelang verwendete und bewährte
Methode anwenden, mit einem einzigen PRINT-Befehl (plus copy-paste):
def ziffernBuild_as_Before(ziffern):
z1 = ziffern.splitlines()
print(z1) #
['123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ',
... ]
for z in ziffern.splitlines():
print('t += "%s"' % z)
Die dadurch entstehende Ausgabe sieht so aus:
t +=
"123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ"
t +=
"ÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġ"
usw.
t += "千卄卅卆升午卉半卋卌卍华协卐卑卒卓協单卖南単卙博卛卜卝卞卟占卡卢卣卤卥卦卧卨卩ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓ"
t +=
"ㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩㄪㄫꆰꆱꆲꆳꆴꆵꆶꆷꆸꆹꆺꆻꆼꆽꆾꆿꇀꇁꇂꇃꇄꇅꇆꇇꇈꇉꇊꇋꇌꇍꇎꇏꇐꇑꇒꇓꇔꇕꇖꇗꇘꇙꇚꇛꇜꇝꇞꇟꇠꇡꇢꇣꇤ"
t += "ꇥꇦꇧꇨꇩꇪꇫꇬꇭꇮꇯꇰꇱꇲꇳꇴꇵꇶꇷꇸꇹꇺꇻꇼꇽꇾꇿꈀꈁꈂꈃꈄꈅꈆꈇꈈꈉꈊꈋꈌꈍꈎꈏꈐꈑ"
Das ist fehlerfreier und eleganter Python-Code (er kommt ohne eine endlos lange
"Addition von Strings" aus).
Den kann man unverändert in sein Prog kopieren.
Der String t ist allerdings ebenfalls zu kurz für's 4096er System.
Also Hausaufgaben : Nachbessern
In der Zwischenzeit könnten Sie die Fragen beantworten, die die Mit-Foristen,
Herr Baier und Herr Grellert, gestellt haben. Ich fasse sie hier kurz zusammen
(plus einige weitere):
(1) Was ist der ZWECK Ihres Programms?
Bloß ein bombastischer Ersatz für die Nummerierung der UTF8-Zeichen -- Oder
mehr?
(2) Wie kommen "krumme" Bitzahlen-Werte (11, 12, 17,...) bei Ihrem Programm
zustande?
(3) Wie werden die dann von heutigen Computern verarbeitet?
Bits treten doch HEUTE nur in Bytes, also in 8-er Gruppen auf -- dummerweise
sogar in UTF8-Zeichen, die Sie in Ihren <ziffern>String einbauen.
(3) Wie sind Sie auf das 4096er-System gestoßen? Wie fing alles an?
Das haben Sie seinerzeit, bei Ihrem Erstlings-Programm Crypto-Matrix, sehr
ausführlich beschrieben (ausgedruckt 40+ Seiten).
(4) In Ihrem Programm kann man zudem verschiedene Basen wählen: 2048, 1024,
512, ... Einmal heißt es sogar: Alle Basen von 2 bis 4096.
Wann und wofür verwendet man welche Basis?
(5) Können Sie das hier besprochene Programm leichter zugänglich machen? Früher
hatten Sie eine Homepage, auf der man alles einfach herunterladen konnte.
Auf knappe, präzise, verständliche Antworten auf diese (und weitere Fragen)
warte ich schon etwas länger.
Liefern Sie uns, bitte, keine Output-Schnipsel Ihres Programms.
Lösen Sie doch einfach Ihr großzügiges Versprechen am Ende (fast) jeder Ihrer
Mails in diesem Forum, also
HIER,
ein:
"Für weitere Erläuterungen steht der Author jederzeit gern zur Verfügung."
Oder volkstümlich formuliert: Butter bei die Fische.
W. Buechel
_______________________________________________
python-de Mailingliste -- [email protected]
Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an
[email protected]
https://mail.python.org/mailman3/lists/python-de.python.org/
Mitgliedsadresse: [email protected]