Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #6131

[Python-de] Keyboard-Coding 2

From "Wolli Buechel" <wjb131@web.de>
Newsgroups de.comp.lang.python
Subject [Python-de] Keyboard-Coding 2
Date 2024-07-25 18:21 +0000
Message-ID <172193171563.25532.17724443145886942192@mail.python.org> (permalink)

Show all headers | View raw


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

Back to de.comp.lang.python | Previous | Next | Find similar


Thread

[Python-de] Keyboard-Coding 2 "Wolli Buechel" <wjb131@web.de> - 2024-07-25 18:21 +0000

csiph-web