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 -- python-de@python.org
Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an 
python-de-le...@python.org
https://mail.python.org/mailman3/lists/python-de.python.org/
Mitgliedsadresse: arch...@mail-archive.com

Reply via email to