Python unerfahrene Person versucht, 100 Sprachverarbeitung 07-09 zu klopfen

Dies ist eine Fortsetzung davon. Python unerfahrene Person versucht, 100 Sprachverarbeitung 00-04 zu klopfen https://qiita.com/earlgrey914/items/fe1d326880af83d37b22

Python unerfahrene Person versucht, 100 Sprachverarbeitung 05-06 zu klopfen https://qiita.com/earlgrey914/items/e772f1b7e5efea114e1d


07. Anweisungsgenerierung nach Vorlage

Implementieren Sie eine Funktion, die die Argumente x, y, z verwendet und die Zeichenfolge "y bei x ist z" zurückgibt. Setzen Sie außerdem x = 12, y = "Temperatur", z = 22,4 und überprüfen Sie das Ausführungsergebnis.

e. was ist das? Irgendwie wurde es sofort so einfach ...?

iinoka.py


x=12
y="Temperatur"
z=22.4

def moziKetsugo(x, y, z):
    print(str(x) + "von Zeit" + y + "Ist" + str(z))

moziKetsugo(x, y, z)
Die Temperatur um 12 Uhr ist 22.4

Ist das richtig···? Ist es nicht zu einfach ...? Denken wir aus einer etwas abgenutzten Perspektive. Das Problem ist, dass, wenn das Argument die Zeichenfolge "x, y, z" ist, "y bei x ist z" zurückgegeben wird. Wenn die Variablen x = 12, y = "Temperatur", z = 22,4 sind, wenden Sie die Zeichen an und geben Sie ** zurück. Ist es nicht ein Problem, eine Funktion zu erstellen? (Wenn ja, schreiben Sie es etwas klarer) Wenn ja ... In Java wurde die Verarbeitung abhängig vom Vorhandensein oder Fehlen des Arguments geändert (ich habe vergessen, was es war), aber ich frage mich, ob ich das Gleiche tun sollte.

Ich habe gegoogelt. Es scheint ein Standardargument zu geben.
Referenz
https://note.nkmk.me/python-argument-default/

Wie wäre es damit.

enshu07.py


x=12
y="Temperatur"
z=22.4

def moziKetsugo(x="x", y="y", z="z"):
    print(str(x) + "von Zeit" + y + "Ist" + str(z))

#Einfach ausgeben
moziKetsugo()

#Ausgabe mit Argumenten
moziKetsugo(x, y, z)
y bei x ist z
Die Temperatur um 12 Uhr ist 22.4

Nun, ich verstehe die Absicht der Frage nicht, also lassen Sie mich bitte wissen, ob jemand sie verstehen kann. Ich frage mich, ob es in Ordnung ist, weil es so einfach ist ...

08. Kryptographie

Implementieren Sie die Funktionsverschlüsselung, die jedes Zeichen der angegebenen Zeichenfolge gemäß den folgenden Spezifikationen konvertiert.

** ・ Bei Kleinbuchstaben durch (219 - Zeichencode) ersetzen ・ Andere Zeichen werden unverändert ausgegeben Verwenden Sie diese Funktion, um englische Nachrichten zu verschlüsseln / entschlüsseln. ** ** **

(Ich habe die Problemstellung als Überschrift verwendet, aber es tut mir leid, dass ich nicht wusste, wie ich die Überschrift brechen soll, daher fühlte es sich seltsam an.)

Chiffre, hoch hoch ... chi, chi p ha (TOEIC340)

Schreiben Sie die Komposition vorerst. Ich möchte, dass Sie so viel wie einen einfachen Satz als Beispiel in den Problemsatz (Punpun) schreiben

punpun.py



genbun = "the magic words are squeamish ossifrage To know is to know that you know nothing That is the true meaning of knowledge"

def cipher(s):
    if s ==Alphabet:
        (219 -Zeichencode)Ersetzen Sie durch das Zeichen
Rückgabe der Zeichenfolge nach der Verschlüsselung
    else:
Ausgabe so wie sie ist zurückgeben

#Verschlüsselung
angobun = cipher(genbun))
print(angobun)

#Entschlüsselung
fukugobun = decryption(genbun)
print(fukugobun)

Ich frage mich also, wie man eine Zeichencode-Konvertierung durchführt. In was wird der Code konvertiert? Ist UTF-8 in Ordnung? Mit UTF-8 kann der 219-Zeichen-Code-Teil nicht implementiert werden ...?

Als ich gegoogelt wurde, scheint Python eine Funktion ord () ** zu haben, die eine Ganzzahl zurückgibt, die als Unicode-Codepunkt mit ** Zeichen bezeichnet wird. Vielleicht kannst du das benutzen. Es ist unfreundlich! !! !! (Punpun

Ausprobieren.

tameshi.py


print("a")
print(ord("a"))
a
97

Hmm, ich verstehe. Ist a`` 97? Was ist dann mit der Zeichenkette?

moziha.py


print("abc")
print(ord("abc"))
abc
Traceback (most recent call last):
  File "/home/ec2-user/knock/enshu08.py", line 2, in <module>
    print(ord("abc"))
TypeError: ord() expected a character, but string of length 3 found

Das war's. ** Übergebe jeweils ein Zeichen an ord () **. OK.

Schreiben wir zuerst diese if-Anweisung.

if.py


if s ==Alphabet:

Es scheint, dass es eine Funktion für wund gibt, wenn Sie für "Python-Alphabet-Urteil" googeln.

Bestimmen Sie, ob es niedriger ist (niedriger ist) Bestimmt als alphanumerisch (isalnum) Beurteilen Sie, ob es sich um ein alphabetisches Zeichen (isalpha) handelt.


Referenz-URL
https://hibiki-press.tech/learn_prog/python/isupper-islower/3728#islower

Ich konnte es verschlüsseln

dekitayo.py


genbun = "aBc0"

def cipher(s):
    kaesubun = ""
    
    for i in s:
        #Beurteilung, ob es alphabetisch und klein geschrieben ist
        if i.isalpha() and i.islower():
            kaesubun = kaesubun + chr(219-ord(i))
        else:
            kaesubun = kaesubun + i
    return kaesubun

angobun = cipher(genbun)
print(angobun)
zBx0

Ich habe vergessen, es oben zu schreiben, aber es scheint, dass Sie ** Zeichen mit ord () in Unicode-Codepunkte konvertieren können und umgekehrt mit chr (). ** ** ** Und jetzt schreibe ich "für i in s:" auf beiläufige Weise, aber in dieser Notation Übung 03 83% 88% E3% 82% AB% E3% 83% BC% E3% 82% BF% E3% 82% AF% E3% 82% B7% E3% 83% BC% E3% 81% AE% E6% 96% 87% E5% AD% 97% E3% 82% 92% E5% 85% 88% E9% A0% AD% E3% 81% 8B% E3% 82% 89% E4% BA% A4% E4% BA% 92% E3% 81% AB% E9% 80% A3% E7% B5% 90% E3% 81% 97% E3% 81% A6% E6% 96% 87% E5% AD% 97% E5% 88% 97% E3% 83% 91% E3% 82% BF% E3% 83% 88% E3% 82% AF% E3% 82% AB% E3% 82% B7% E3% 83% BC% E3% 83% BC% E3% 82% Was mir bei 92% E5% BE% 97% E3% 82% 88 aufgefallen ist, ist riesig. (Persönlicher Komplimentpunkt. Kompliment an alle !!) ** Wenn Sie diese Notation nicht kennen, haben Sie die Zeichenfolge möglicherweise absichtlich Zeichen für Zeichen geteilt, in ein Array eingefügt, herausgenommen und verarbeitet. ** ~~ Das habe ich in der Java-Ära geschrieben. ~~

Dann entschlüsseln. Das ist einfach.

yoyu.py


genbun = "aBc0"

#Verschlüsselungsfunktion
def cipher(s):
    kaesubun = ""
    
    for i in s:
        #Beurteilung, ob es alphabetisch und klein geschrieben ist
        if i.isalpha() and i.islower():
            kaesubun = kaesubun + chr(219-ord(i))
        else:
            kaesubun = kaesubun + i
    return kaesubun

#Entschlüsselungsfunktion
def decryption(s):
    kaesubun = ""
    
    for i in s:
        if i.isalpha() and i.islower():
            kaesubun = kaesubun + chr(219+ord(i))
        else:
            kaesubun = kaesubun + i
    return kaesubun


print("Original")
print(genbun)

angobun = cipher(genbun)
print("Geheimtext")
print(angobun)

fukugobun = decryption(angobun)
print("Entschlüsselter Text")
print(fukugobun)
Original
aBc0
Geheimtext
zBx0
Entschlüsselter Text
ŕBœ0

Ahhhhhhh! ?? !! ?? !! ??

Wenn Sie versuchen, mit Papier zu rechnen Es war "chr (219-ord (i))" anstelle von "chr (219 + ord (i))". ** Es gibt eine Falle, in der ich denke, dass es einfach ist. Bitte als Lektion verwenden () **

Mit der Hilfe abgeschlossen ↓.

enshu08.py


genbun = "aBcDeFghijKLM0123456789"

#Verschlüsselungsfunktion
def cipher(s):
    kaesubun = ""
    
    for i in s:
        #Beurteilung, ob es alphabetisch und klein geschrieben ist
        if i.isalpha() and i.islower():
            kaesubun = kaesubun + chr(219-ord(i))
        else:
            kaesubun = kaesubun + i
    return kaesubun

#Entschlüsselungsfunktion
def decryption(s):
    kaesubun = ""
    
    for i in s:
        if i.isalpha() and i.islower():
            kaesubun = kaesubun + chr(219-ord(i))
        else:
            kaesubun = kaesubun + i
    return kaesubun


print("Original")
print(genbun)

angobun = cipher(genbun)
print("Geheimtext")
print(angobun)

fukugobun = decryption(angobun)
print("Entschlüsselter Text")
print(fukugobun)
Original
aBcDeFghijKLM0123456789
Geheimtext
zBxDvFtsrqKLM0123456789
Entschlüsselter Text
aBcDeFghijKLM0123456789

Weiter als nächstes! !!

  1. Typoglycemia

Erstellen Sie ein Programm, das die Reihenfolge der anderen Zeichen zufällig neu anordnet, wobei das erste und das letzte Zeichen jedes Wortes für die Wortfolge durch Leerzeichen getrennt bleiben. Wörter mit einer Länge von 4 oder weniger werden jedoch nicht neu angeordnet. Geben Sie einen geeigneten englischen Satz ein (zum Beispiel: "Ich konnte nicht glauben, dass ich tatsächlich verstehen konnte, was ich las: die phänomenale Kraft des menschlichen Geistes.") Und überprüfen Sie das Ausführungsergebnis.

Normales Japanisch schwierig.

Zuallererst das ganze Bild.

zenta.py


s = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind ."

#Erstellen Sie eine Liste des Originaltextes, die durch ein Leerzeichen mit halber Breite getrennt ist
list = s.split()

kaesubun = []
for i in list:
Die Länge der Zeichenfolge in der if-Liste ist größer als 4:
Ordnen Sie die Reihenfolge der anderen Zeichen nach dem Zufallsprinzip neu an, wobei das erste und das letzte Zeichen übrig bleiben
        kaesubun.append(Zeichen nach dem Austausch)
    else:
        #Da es ersatzlos ist
        kaesubun.append(i)

Ja, so schwierig sieht es nicht aus. Ich fragte mich, wie ich "die Reihenfolge anderer Charaktere zufällig ändern kann".

Wählen Sie zufällig mehrere Elemente aus (keine Duplizierung): random.sample ()

https://note.nkmk.me/python-random-choice-sample-choices/

Das war's. Zum ersten Mal werde ich hier die Standardbibliothek verwenden, um "zufällig" anzugeben, aber ist das in Ordnung? Ist das in Ordnung? Versuchen Sie es zufällig.

rand.py


import random

s = ["a", "b", "c", "d","e"]
print(random.sample(s, 5))
['c', 'e', 'b', 'a', 'd']

Jep. Gute Stimmung. Ich konnte zufällig 5 Zeichen bekommen.

"Anfang und Ende verlassen" ist [Übung 02](https://qiita.com/earlgrey914/items/fe1d326880af83d37b22#02-%E3%83%91%E3%83%88%E3%82%AB % E3% 83% BC% E3% 82% BF% E3% 82% AF% E3% 82% B7% E3% 83% BC% E3% 83% 91% E3% 82% BF% E3% 83% 88% E3 Verwenden Sie Scheiben wie bei% 82% AF% E3% 82% AB% E3% 82% B7% E3% 83% BC% E3% 83% BC). Man kann sagen, dass "vom zweiten Zeichen (1) zum Zeichen unmittelbar vor dem Ende (-1)", also [1: -1]

onazi.py


s = ["a", "b", "c", "d", "e"]
print(s[1:-1])
['b', 'c', 'd']

Schneiden Sie auch "Start" und "Ende"

nokosi.py


s = ["a", "b", "c", "d", "e"]
print(s[0])
print(s[-1])
['a']
['e']

In Ordung. Wahrscheinlich zu gehen.

** Immerhin ist die Notation von Slices etwas mühsam. ** ** ** Obwohl s [-1] "das letzte Zeichen" ist s [1: -1] ist "vom zweiten bis zum letzten Zeichen", oder? Ist es nicht ein bisschen schwer zu verstehen?

↓ Es könnte besser sein, so zu schreiben. (Ich weiß nicht, ob du so schreiben kannst) "Letzter Charakter" s[-1: : ] "Vom zweiten Charakter zum Charakter unmittelbar vor dem Ende" s[1:-1: ]

~ 20 Minuten später ~ Es ist fertig.

enshu09.py


import random

s = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind ."

#Erstellen Sie eine Liste des Originaltextes, die durch ein Leerzeichen mit halber Breite getrennt ist
kugitta_list = s.split()

kaesubun = []

#Wort für Wort im Originaltext verarbeitet
for ichitango in kugitta_list:
    #Wenn das Wort größer als 4 Buchstaben ist
    if len(ichitango) > 4:
        kaesutango = []
        
        #Listen Sie Wörter auf, indem Sie sie Zeichen für Zeichen trennen
        ichitango_kugitta_list= list(ichitango)
        
        #Erstellen Sie eine Liste mit Zeichen ohne das erste und das letzte Zeichen
        sentou_matsubi_nozoita_list = ichitango_kugitta_list[1:-1]
        
        #Fügen Sie den ersten Buchstaben in die Liste "Wörter, die zurückgegeben werden sollen" ein
        kaesutango.append(ichitango_kugitta_list[0])
        
        #Holen Sie sich nach dem Zufallsprinzip alle Zeichen aus der Liste der Zeichen mit Ausnahme des ersten und des letzten Zeichens und fügen Sie sie in die Liste der zurückzugebenden Wörter ein
        kaesutango.extend(random.sample(sentou_matsubi_nozoita_list, len(sentou_matsubi_nozoita_list)))
        
        #Fügen Sie den letzten Buchstaben in die Liste "Wörter, die zurückgegeben werden sollen" ein
        kaesutango.append(ichitango_kugitta_list[-1])
        
        #Fügen Sie "Wörter, die zurückgegeben werden sollen" in die Liste der "Sätze, die zurückgegeben werden sollen" ein.
        kaesubun.append(''.join(kaesutango))
    else:
        #Fügen Sie es in die Liste der "zurückgegebenen Sätze" ein, wie es ist, ohne es zu ersetzen
        kaesubun.append(ichitango)
        
#Konvertieren Sie das Array der zurückgegebenen Anweisungen in eine Zeichenfolge und geben Sie es aus (und geben Sie ein Leerzeichen als Trennzeichen für die Elemente des Arrays an).
print(' '.join(kaesubun))

I c'ulnodt bvlieee that I could altluacy usraetdnnd what I was rdnieag : the paemonnhel pewor of the hmuan mind .

Die erste Notation ist ". Join (kaesubun)".

Ich konvertiere eine durch Zeichen getrennte Zeichenfolgenliste in eine Zeichenfolge. Wenn es eine Liste von "[" a "," b "," c "]" gibt Wenn Sie '' schreiben. Join (Liste) gibt abc aus. Durch Schreiben von "a". Join (Liste) wird es als "a a b a c" ausgegeben. ("A" ist das Trennzeichen)

Also, mir geht's gut.

In Ordung! !! !! Damit sind alle 10 Fragen in Kapitel 1 der Sprachverarbeitung abgeschlossen! !! !! !!

** Dieser Artikel alleine hat 2 Stunden gedauert! !! !! !! !! !! !! !! (wichtig)** ** Kapitel 1 dauerte 7 Stunden! !! !! !! !! !! (wichtig)**

Ab morgen beginnen wir in Kapitel 2.

Recommended Posts

Python unerfahrene Person versucht, 100 Sprachverarbeitung 14-16 zu klopfen
Python unerfahrene Person versucht, 100 Sprachverarbeitung 07-09 zu klopfen
Python unerfahrene Person versucht, 100 Sprachverarbeitung 10 ~ 13 zu klopfen
Python unerfahrene Person versucht, 100 Sprachverarbeitung 05-06 zu klopfen
Python unerfahrene Person versucht, 100 Sprachverarbeitung 00-04 zu klopfen
100 Sprachverarbeitungsklopfen mit Python 2015
100 Sprachverarbeitung Knock Kapitel 1 (Python)
100 Sprachverarbeitung Knock Kapitel 2 (Python)
100 Sprachverarbeitungsklopfen mit Python (Kapitel 1)
100 Sprachverarbeitung Knock Kapitel 1 in Python
100 Sprachverarbeitungsklopfen mit Python (Kapitel 3)
Python-Anfänger versucht 100 Sprachverarbeitung klopfen 2015 (05 ~ 09)
100 Sprachverarbeitung Knock Kapitel 1 von Python
Python-Anfänger versucht 100 Sprachverarbeitung klopfen 2015 (00 ~ 04)
100 Sprachverarbeitungsklopfen (2020): 28
100 Sprachverarbeitungsklopfen (2020): 38
100 Sprachverarbeitung klopfen 00 ~ 02
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 2)
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 1)
100 Sprachverarbeitung klopfen 2020 [00 ~ 39 Antwort]
100 Sprachverarbeitung klopfen 2020 [00-79 Antwort]
100 Sprachverarbeitung Knock 2020 Kapitel 1
100 Amateur-Sprachverarbeitungsklopfen: 17
100 Sprachverarbeitung klopfen 2020 [00 ~ 49 Antwort]
Python: Verarbeitung natürlicher Sprache
100 Sprachverarbeitung Knock-52: Stemming
100 Sprachverarbeitung Knock Kapitel 1
Einführung in die Python-Sprache
100 Amateur-Sprachverarbeitungsklopfen: 07
100 Sprachverarbeitung Knock 2020 Kapitel 3
100 Sprachverarbeitung Knock 2020 Kapitel 2
100 Amateur-Sprachverarbeitungsklopfen: 09
100 Amateur-Sprachverarbeitungsklopfen: 47
100 Sprachverarbeitung Knock-53: Tokenisierung
100 Amateur-Sprachverarbeitungsklopfen: 97
100 Sprachverarbeitung klopfen 2020 [00 ~ 59 Antwort]
100 Amateur-Sprachverarbeitungsklopfen: 67
Eintrag, bei dem Python-Anfänger ihr Bestes geben, um nach und nach 100 Sprachprozesse zu beenden
100 Sprachverarbeitung Knock-92 (mit Gensim): Anwendung auf Analogiedaten
[Kapitel 3] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 2] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 4] Einführung in Python mit 100 Klopfen Sprachverarbeitung
100 Sprachverarbeitung Knock-51: Wortausschnitt
100 Sprachverarbeitung Knock-58: Extraktion von Taple
100 Sprachverarbeitung Knock-57: Abhängigkeitsanalyse
100 Sprachverarbeitung Knock-50: Satzumbruch
100 Sprachverarbeitung Knock-25: Vorlagenextraktion
Ich habe versucht, 100 Sprachverarbeitung klopfen 2020
100 Sprachverarbeitung Knock-56: Co-Referenz-Analyse
Lösen von 100 Sprachverarbeitungsklopfen 2020 (01. "Patatokukashi")
100 Amateur-Sprachverarbeitungsklopfen: Zusammenfassung
Sprachverarbeitung 100 Knocks-43: Extrahieren Sie Klauseln mit Nomenklatur in Bezug auf Klauseln mit Verben
[Python] Versuchen Sie, Ramen-Shops durch Verarbeitung natürlicher Sprache zu klassifizieren
100 Sprachverarbeitung Knock-42: Anzeige der Phrase der betroffenen Person und der betroffenen Person
Überlassen Sie die mühsame Verarbeitung Python
100 Sprachverarbeitung Knock 2020 Kapitel 2: UNIX-Befehle
100 Sprachverarbeitung Knock 2015 Kapitel 5 Abhängigkeitsanalyse (40-49)
100 Sprachverarbeitung Knock 2020 Kapitel 4: Morphologische Analyse
100 Sprachverarbeitung Knock 2020 Kapitel 9: RNN, CNN
100 Sprachverarbeitung Knock-76 (mit Scicit-Learn): Beschriftung
100 Sprachverarbeitung Knock-55: Extraktion eindeutiger Ausdrücke