Maintenant, après avoir étudié Python, j'ai essayé Language Processing 100 Knock 2015. Essayez-le sans rien regarder au début, puis réessayez avec un meilleur style d'écriture (intelligent), en vous référant au style d'écriture de l'autre personne de 100 coups.
De meilleures références d'écriture sont listées à la fin.
Obtenez une chaîne dans laquelle les caractères de la chaîne «souligné» sont disposés à l'envers (de la fin au début).
code
input_str = 'stressed'
result = input_str[::-1]
print(result)
Résultat de sortie
desserts
Si vous définissez une valeur négative pour le pas de tranche, il sera vu de la fin. Il est peu probable que cela change beaucoup plus que cela.
Retirez les 1er, 3ème, 5ème et 7ème caractères de la chaîne de caractères "Patatokukashi" et obtenez la chaîne de caractères concaténée.
code
input_str = 'Patatoku Kashii'
result = ''
for index, s in enumerate(input_str):
if index % 2 == 0:
result += s
print(result)
Résultat de sortie
Voiture Pat
Cela convient également aux tranches.
code
input_str = 'Patatoku Kashii'
result = input_str[::2]
print(result)
Obtenez la chaîne de caractères "Patatokukashi" en reliant alternativement les caractères "Pattocar" + "Tax" depuis le début.
code
p = 'Voiture Pat'
t = 'Taxi'
result = ''
for i in range(len(p)):
result += p[i]
result += t[i]
print(result)
Résultat de sortie
Patatoku Kashii
Faites une liste de ['Patter', 'Toku', 'Kashi', 'ー ー']
et join ()
.
code
p = 'Voiture Pat'
t = 'Taxi'
result = ''.join([char1 + char2 for char1, char2 in zip(p, t)])
print(result)
Décomposez la phrase "Maintenant, j'ai besoin d'un verre, alcoolique bien sûr, après les lourdes conférences sur la mécanique quantique." En mots et créez une liste du nombre de caractères (alphabétiques) dans chaque mot par ordre d'apparition.
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)
Résultat de sortie
[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]
L'argument de split ()
n'a pas besoin d'être spécifié car il est `` '' 'par défaut.
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)
Décomposez la phrase "Salut, il a menti parce que le bore ne pouvait pas oxyder le fluor. De nouvelles nations pourraient également signer une clause de sécurité de paix. Arthur King Can." Le premier mot est le premier caractère, les autres mots sont les deux premiers caractères, et le tableau associatif (type de dictionnaire ou type de carte) de la chaîne de caractères extraite à la position du mot (quel nombre de mots depuis le début) est créé. Créez-le.
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)
Résultat de sortie
{'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}
Si l'instruction devient un opérateur ternaire. Il semble que le nom de la liste ne soit pas bon, alors je l'ai corrigé.
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))
Résultat de sortie
['Iam', 'aman', 'anNLPer']
['Ia', 'am', 'ma', 'an', 'nN', 'NL', 'LP', 'Pe', 'er']
Le caractère n-gramme comprend également des espaces. J'ai toujours mal compris. .. .. Correction du mot n-gramme car le format de sortie n'est pas correct.
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))
Résultat de sortie
[['I', 'am'], ['am', 'an'], ['an', 'NLPer']]
['I ', ' a', 'am', 'm ', ' a', 'an', 'n ', ' N', 'NL', 'LP', 'Pe', 'er']
Trouvez l'ensemble des bi-grammes de caractères contenus dans «paraparaparadise» et «paragraphe» comme X et Y, respectivement, et trouvez l'ensemble de somme, l'ensemble de produits et l'ensemble de différences de X et Y, respectivement. En outre, découvrez si le bi-gram'se'est inclus dans X et Y.
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))
Résultat de sortie
['ar', 'ag', 'gr', 'is', 'ph', 'se', 'pa', 'di', 'ap', 'ad', 'ra']
['ar', 'pa', 'ap', 'ra']
['is', 'se', 'di', 'ad']
True
False
Si vous le réglez sur set, vous pouvez effectuer des opérations de set. Je n'avais pas besoin d'une fonction ... La fonction de vérification est également assez redondante. Vous devriez le remarquer en écrivant.
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)
Implémentez une fonction qui prend les arguments x, y, z et renvoie la chaîne "y at x is z". De plus, définissez x = 12, y = "température", z = 22,4 et vérifiez le résultat de l'exécution.
code
x = 12
y = 'Température'
z = 22.4
def create_str(x, y, z):
return str(x) + 'de temps' + y + 'Est' + str(z)
print(create_str(x, y, z))
Résultat de sortie
La température à 12 heures est de 22.4
Je pense qu'il existe différentes manières d'ajouter des chaînes de caractères, mais il semble qu'il n'y aura pas de changements majeurs.
Implémentez le chiffrement de fonction qui convertit chaque caractère de la chaîne de caractères donnée selon les spécifications suivantes.
Remplacer par (219 --character code) caractères si minuscules Afficher les autres caractères tels quels Utilisez cette fonction pour crypter / décrypter les messages en anglais.
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)))
Résultat de sortie
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.
Il est peu probable que cela change beaucoup plus que cela. Correctement, "décrypter" au lieu de "décrypter". J'ai pensé, mais maintenant il semble que le "décryptage" soit aussi couramment utilisé ...
219 --x = y
, il était naturel que 219 --y = x
. 219 peut être un autre nombre.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))
Résultat de sortie
I cunldo't biveele that I culod aclatluy urdseanntd what I was rdineag : the pehaneomnl pewor of the huamn mind .
Supprimez les variables qui ne sont utilisées qu'une seule fois même si elles sont définies, et les variables qui ne sont pas utilisées du tout même si elles sont définies.
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))
Je vais résumer l'article de 100 language processing knock 2015 (Python) posté sur Qiita à titre de référence.
Recommended Posts