Nachdem ich Python studiert hatte, versuchte ich Language Processing 100 Knock 2015. Versuchen Sie es zuerst, ohne etwas zu betrachten, und versuchen Sie es dann erneut mit einem besseren (intelligenten) Schreibstil, der sich auf den Schreibstil der anderen Person von 100 Schlägen bezieht.
Bessere Schreibreferenzen sind am Ende aufgeführt.
Holen Sie sich eine Zeichenfolge, in der die Zeichen der Zeichenfolge "betont" umgekehrt angeordnet sind (vom Ende bis zum Anfang).
Code
input_str = 'stressed'
result = input_str[::-1]
print(result)
Ausgabeergebnis
desserts
Wenn Sie einen negativen Wert für den Slice-Schritt festlegen, wird dieser am Ende angezeigt. Es ist unwahrscheinlich, dass sich daran viel mehr ändert.
Nehmen Sie das 1., 3., 5. und 7. Zeichen der Zeichenkette "Patatokukashi" heraus und erhalten Sie die verkettete Zeichenkette.
Code
input_str = 'Patatoku Kashii'
result = ''
for index, s in enumerate(input_str):
if index % 2 == 0:
result += s
print(result)
Ausgabeergebnis
Pat Auto
Dies ist auch bei Slices in Ordnung.
Code
input_str = 'Patatoku Kashii'
result = input_str[::2]
print(result)
Erhalten Sie die Zeichenkette "Patatokukashi", indem Sie die Zeichen "Pattocar" + "Tax" von Anfang an abwechselnd verbinden.
Code
p = 'Pat Auto'
t = 'Taxi'
result = ''
for i in range(len(p)):
result += p[i]
result += t[i]
print(result)
Ausgabeergebnis
Patatoku Kashii
Machen Sie eine Liste von "[" Patter "," Toku "," Kashi "," ー ー "] und" join () ".
Code
p = 'Pat Auto'
t = 'Taxi'
result = ''.join([char1 + char2 for char1, char2 in zip(p, t)])
print(result)
Teilen Sie den Satz „Jetzt brauche ich nach den schweren Vorlesungen über Quantenmechanik einen Alkoholiker auf.“ In Wörter auf und erstellen Sie eine Liste mit der Anzahl der (alphabetischen) Zeichen in jedem Wort in der Reihenfolge ihres Auftretens.
Code
input_str = 'Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics.'
result = []
input_str = input_str.replace(',', '').replace('.', '').split(' ')
for s in input_str:
result.append(len(s))
print(result)
Ausgabeergebnis
[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]
Das Argument "split ()" muss nicht angegeben werden, da es standardmäßig "" ist.
Code
input_str = 'Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics.'
result = []
input_str = input_str.replace(',', '').replace('.', '').split()
for s in input_str:
result.append(len(s))
print(result)
Teilen Sie den Satz "Hi He Lied, weil Bor Fluor nicht oxidieren konnte. Neue Nationen könnten auch die Friedenssicherheitsklausel unterzeichnen. Arthur King Can." In die Wörter 1, 5, 6, 7, 8, 9, 15, 16, 19 auf Das erste Wort ist das erste Zeichen, und die anderen Wörter sind die ersten beiden Zeichen. Erstelle es.
Code
input_str = 'Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can.'
single_ary = [1, 5, 6, 7, 8, 9, 15, 16, 19]
result = {}
input_str = input_str.replace('.', '').split(' ')
for index, s in enumerate(input_str):
if index + 1 in single_ary:
result[s[0]] = index
else:
result[s[0] + s[1]] = index
print(result)
Ausgabeergebnis
{'H': 0, 'He': 1, 'Li': 2, 'Be': 3, 'B': 4, 'C': 5, 'N': 6, 'O': 7, 'F': 8, 'Ne': 9, 'Na': 10, 'Mi': 11, 'Al': 12, 'Si': 13, 'P': 14, 'S': 15, 'Cl': 16, 'Ar': 17, 'K': 18, 'Ca': 19}
If-Anweisung wird zu einem ternären Operator. Es scheint, dass der Name in der Liste nicht gut ist, also habe ich ihn korrigiert.
Code
input_str = 'Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can.'
single_list = [1, 5, 6, 7, 8, 9, 15, 16, 19]
result = {}
input_str = input_str.split()
for index, s in enumerate(input_str):
l = 1 if index + 1 in single_list else 2
result[s[:l]] = index
print(result)
Code
input_str = 'I am an NLPer'
def create_word_n_gram(input_str, num):
str_list = input_str.split(' ')
results = []
for i in range(len(str_list) - num + 1):
ngram = ''
for j in range(num):
ngram += str_list[j + i]
results.append(ngram)
return results
def create_char_n_gram(input_str, num):
str_no_space = input_str.replace(' ', '')
results = []
for i in range(len(str_no_space) - num + 1):
ngram = ''
for j in range(num):
ngram += str_no_space[j + i]
results.append(ngram)
return results
print(create_word_n_gram(input_str, 2))
print(create_char_n_gram(input_str, 2))
Ausgabeergebnis
['Iam', 'aman', 'anNLPer']
['Ia', 'am', 'ma', 'an', 'nN', 'NL', 'LP', 'Pe', 'er']
Das Zeichen n-Gramm enthält auch Leerzeichen. Ich habe immer falsch verstanden. .. .. Das Wort n-Gramm wurde korrigiert, da das Ausgabeformat nicht korrekt ist.
Code
input_str = 'I am an NLPer'
def create_word_n_gram(input_str, num):
str_list = input_str.split(' ')
results = []
for i in range(len(str_list) - num + 1):
results.append(str_list[i:i + num])
return results
def create_char_n_gram(input_str, num):
results = []
for i in range(len(input_str) - num + 1):
results.append(input_str[i:i + num])
return results
print(create_word_n_gram(input_str, 2))
print(create_char_n_gram(input_str, 2))
Ausgabeergebnis
[['I', 'am'], ['am', 'an'], ['an', 'NLPer']]
['I ', ' a', 'am', 'm ', ' a', 'an', 'n ', ' N', 'NL', 'LP', 'Pe', 'er']
Suchen Sie den in "paraparaparadise" und "Absatz" enthaltenen Satz von Zeichen-Bi-Gramm als X bzw. Y und suchen Sie den Summensatz, den Produktsatz und den Differenzsatz von X bzw. Y. Finden Sie außerdem heraus, ob das Bi-Gramm in X und Y enthalten ist.
Code
input_str_x = 'paraparaparadise'
input_str_y = 'paragraph'
word = 'se'
def create_char_n_gram(input_str, num):
str_no_space = input_str.replace(' ', '')
results = []
for i in range(len(str_no_space) - num + 1):
ngram = ''
for j in range(num):
ngram += str_no_space[j + i]
results.append(ngram)
return results
def calculate_union(list_x, list_y):
list_union = list(set(list_x + list_y))
return list_union
def calculate_intersection(list_x, list_y):
list_sum = list_x + list_y
list_intersection = [elem for elem in set(list_sum) if list_sum.count(elem) > 1]
return list_intersection
def calculate_difference(list_x, list_y):
list_intersection = calculate_intersection(list_x, list_y)
list_sum = list_x + list_intersection
list_difference = [elem for elem in set(list_sum) if list_sum.count(elem) == 1]
return list_difference
def check_including_word(word_list, word):
if word in word_list:
return True
else:
return False
x = create_char_n_gram(input_str_x, 2)
y = create_char_n_gram(input_str_y, 2)
print(calculate_union(x, y))
print(calculate_intersection(x, y))
print(calculate_difference(x, y))
print(check_including_word(x, word))
print(check_including_word(y, word))
Ausgabeergebnis
['ar', 'ag', 'gr', 'is', 'ph', 'se', 'pa', 'di', 'ap', 'ad', 'ra']
['ar', 'pa', 'ap', 'ra']
['is', 'se', 'di', 'ad']
True
False
Wenn Sie es auf set setzen, können Sie Set-Operationen ausführen. Ich brauchte keine Funktion ... Die Prüffunktion ist auch ziemlich redundant. Sie sollten dies beim Schreiben bemerken.
Code
input_str_x = 'paraparaparadise'
input_str_y = 'paragraph'
word = 'se'
def create_char_n_gram(input_str, num):
results = []
for i in range(len(input_str) - num + 1):
results.append(input_str[i:i + num])
return results
x = set(create_char_n_gram(input_str_x, 2))
y = set(create_char_n_gram(input_str_y, 2))
print(x | y)
print(x - y)
print(x & y)
print(word in x)
print(word in y)
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.
Code
x = 12
y = 'Temperatur'
z = 22.4
def create_str(x, y, z):
return str(x) + 'von Zeit' + y + 'Ist' + str(z)
print(create_str(x, y, z))
Ausgabeergebnis
Die Temperatur um 12 Uhr ist 22.4
Ich denke, es gibt verschiedene Möglichkeiten, Zeichenketten hinzuzufügen, aber es scheint, dass es keine größeren Änderungen geben wird.
Implementieren Sie die Funktionsverschlüsselung, die jedes Zeichen der angegebenen Zeichenfolge gemäß den folgenden Spezifikationen konvertiert.
Durch Kleinbuchstaben ersetzen (219 - Zeichencode) Geben Sie andere Zeichen so aus, wie sie sind Verwenden Sie diese Funktion, um englische Nachrichten zu verschlüsseln / entschlüsseln.
Code
input_str = 'Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics.'
def cipher(input_str):
result = list(map(lambda e: chr(219 - ord(e)) if e.islower() else e, input_str))
return ''.join(result)
print(cipher(input_str))
print(cipher(cipher(input_str)))
Ausgabeergebnis
Nld I mvvw z wirmp, zoxlslorx lu xlfihv, zugvi gsv svzeb ovxgfivh rmeloermt jfzmgfn nvxszmrxh.
Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics.
Es ist unwahrscheinlich, dass sich daran viel mehr ändert. Richtig "entschlüsseln" statt "entschlüsseln". Ich dachte, aber jetzt scheint es, dass "Entschlüsselung" auch häufig verwendet wird ...
219 --x = y
, war es natürlich, dass 219 --y = x
. 219 kann eine andere Nummer sein.Code
import random
input_str = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind ."
def create_typoglycemia(input_str):
input_str_list = input_str.split(' ')
result = []
for word in input_str_list:
length = len(word)
if length > 4:
first_char = word[0]
last_char = word[length - 1]
random_str = ''.join(random.sample(list(word[1:length - 1]), length - 2))
result.append(word[0] + random_str + word[length - 1])
else:
result.append(word)
return ' '.join(result)
print(create_typoglycemia(input_str))
Ausgabeergebnis
I cunldo't biveele that I culod aclatluy urdseanntd what I was rdineag : the pehaneomnl pewor of the huamn mind .
Löschen Sie Variablen, die nur einmal verwendet werden, obwohl sie definiert sind, und Variablen, die überhaupt nicht verwendet werden, obwohl sie definiert sind.
Code
import random
input_str = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind ."
def create_typoglycemia(input_str):
result = []
for word in input_str.split(' '):
length = len(word)
if length > 4:
random_str = ''.join(random.sample(word[1:length - 1], length - 2))
result.append(word[0] + random_str + word[length - 1])
else:
result.append(word)
return ' '.join(result)
print(create_typoglycemia(input_str))
Ich werde den Artikel von 100 Language Processing Knock 2015 (Python), der auf Qiita veröffentlicht wurde, als Referenz zusammenfassen.
Recommended Posts