Une personne inexpérimentée en Python essaie de frapper 100 traitement du langage 00-04

[Une addition] Cliquez ici pour 05-06 Une personne inexpérimentée en Python essaie de frapper 100 traitement du langage 05-06 https://qiita.com/earlgrey914/items/e772f1b7e5efea114e1d Cliquez ici pour le 07-09 Une personne inexpérimentée en Python essaie de frapper 100 traitement du langage 07-09 https://qiita.com/earlgrey914/items/a7b6781037bc0844744b


Cliquez ici pour essayer


100 traitements linguistiques frappent 2015
https://repository.kulib.kyoto-u.ac.jp/dspace/handle/2433/245698

** Profil de l'auteur (important) ** Aucune expérience d'apprentissage de base de Python. Un niveau où vous pouvez copier et déplacer l'échantillon posé sur le net. J'ai un peu touché Java dans les exercices universitaires. Le poste actuel n'est pas un programmeur.

** (Important) Cet article n'écrit pas la réponse correcte et belle, mais enregistre le processus par lequel une personne du niveau ci-dessus est parvenue à la réponse. ** **

00. Ordre inverse des chaînes

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).

Il y avait une réponse sur la page qui a été frappée par googlé "Inversion de chaîne de caractères Python". https://qiita.com/Hawk84/items/ecd0c7239e490ea22308

enshu0.py


str = "stressed"
str = str[::-1]
print(str)
dessert

Je ne sais pas ce que signifie «[:: -1]».

~ 5 minutes googlé ~ Apparemment, python a une fonction appelée slice, qui coupe les chaînes de caractères et les listes. Si vous écrivez «[0: 3]» **, il renverra 3 caractères ** du 1er (0) au 3e (3) de la chaîne de caractères. C'est vraiment difficile à comprendre ici. ** Ne pensez-vous pas que si vous commencez normalement à partir de 0 et comptez jusqu'à 3, il renverra les 4 caractères 0,1,2,3? (Plainte) **

alors,

Si vous voulez spécifier du début à la fin, vous pouvez écrire [:]. Les tranches sont écrites comme «[from here: to here]», mais elles peuvent être omises dans le cas du début et de la fin, ainsi elles peuvent être écrites comme «[:]».

alors,

Il semble que si vous ajoutez [-1] à la fin, la chaîne de caractères sera inversée et retournée. Donc, si vous écrivez [:: -1], il inversera du début à la fin et le retournera.


URL de référence
https://www.sejuku.net/blog/44850

01. «Patatokukashi»

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.

enshu01.py


str = "Patatoku Kashii"
str = str[::2]
print(str)
Voiture Pat

J'ai été recherché sur Google sur les tranches il y a quelque temps, alors j'ai rapidement réalisé que je pouvais aussi utiliser des tranches. La description de «[:: 2]» semble signifier «[du début à la fin: le premier numéro de caractère est 1, et le premier caractère + 2 caractères sont coupés]». Par conséquent, les 1er, 3e, 5e et 7e caractères du début à la fin peuvent être extraits. Si vous voulez sortir "taxi", vous pouvez utiliser la première lettre comme ta, donc ce qui suit est OK.

enshu01_2.py


str = "Patatoku Kashii"
str = str[1::2]
print(str)
Taxi

Cela signifie «[du second caractère (1) à la fin: avec le premier numéro de caractère 1, découpez le premier caractère + 2 chacun]».

02. "Patcar" + "Tax" = "Patatokukasie"

Obtenez la chaîne de caractères "Patatokukashi" en reliant alternativement les caractères "Pattocar" + "Tax" depuis le début.

J'ai trébuché. Avec la connaissance de Java, vous pouvez écrire une telle instruction for, mais est-ce si bon?

dousshiyou.java


String patoka = "Voiture Pat";
String takushi = "Taxi";
int n = patoka.length();

String answer = "";

for (int i = 0; i < n; i++){
 answer = answer +Le i-ème personnage coupé de la voiture de patrouille personnage par personnage
 answer = answer +I-ème lettre tranchée caractère de taxi par caractère
}

Probablement pas ... Je ne sais pas si vous pouvez écrire un document for comme for (int i = 0; i <n; i ++) en Python. Le questionneur a probablement une réponse différente. (Ce java est écrit uniquement en transcrivant l'image dans le cerveau, veuillez donc ne pas jouer avec la notation, etc.)

~ 10 minutes sur Google ~ En conséquence, je n'ai pas obtenu de bonne réponse. Lorsque j'ai écrit correctement la déclaration for, j'ai trouvé ce qui suit

tekitou.py


str_p = "Voiture Pat"

for i in str_p:
    print(i)
Pennsylvanie
À
Puissance
-

D'une manière ou d'une autre, chaque caractère est sorti, non?

De plus, il semble que vous puissiez traiter deux listes en même temps en utilisant quelque chose appelé zip ()
Référence
https://uxmilk.jp/13726

Alors est-ce que tout va bien?

enshu02.py


str_p = "Voiture Pat"
str_t = "Taxi"
answer = ""

for p,t in zip(str_p,str_t):
    answer = answer + p
    answer = answer + t
    
print(answer)
Patatoku Kashii

Je me demande quoi. Eh bien, j'ai pu le faire. Les réponses seront appariées plus tard ...

03. Taux circonférentiel

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) de chaque mot par ordre d'apparition.

Cela semble facile. Je sais que vous pouvez lister des chaînes séparées par des caractères arbitraires avec split ().

lisitka.py


str = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
list = str.split()
print(list)
['Now', 'I', 'need', 'a', 'drink,', 'alcoholic', 'of', 'course,', 'after', 'the', 'heavy', 'lectures', 'involving', 'quantum', 'mechanics.']

Ensuite, obtenez simplement la longueur de la chaîne de caractères dans la liste.

koredeiinoka.py


s = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
list = s.split()

answer = ""

for i in list:
    answer = answer + str(len(i))

print(answer)
3141692753589710

Cette fois, j'ai arrêté de nommer la variable qui stocke la chaîne de caractères str. J'ai appris à utiliser str () lors de la conversion d'un nombre en une chaîne, mais je le porte. Au fait, ʻanswer = answer + str (len (i)) `n'est pas un bon moyen de combiner des chaînes, donc je veux le faire ...

Donc, si la réponse est correcte ** Quelque chose de ... différent, n'est-ce pas? ** **

Même si la question est "Créer une liste", elle est renvoyée sous forme de chaîne de caractères, 3.141592 ... Pas vraiment. C'est ** 3.141692 **. ** Apparemment, les virgules doivent être supprimées dans la première liste. ** ** ↓ Il y a une virgule dedans.

['Now', 'I', 'need', 'a', 'drink,', 'alcoholic', 'of', 'course,', 'after', 'the', 'heavy', 'lectures', 'involving', 'quantum', 'mechanics.']

Pour le moment, supprimez la virgule avec replace (", "," ")
URL de référence
http://python-remrin.hatenadiary.jp/entry/2017/04/24/174405

jokyo.py


s = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
s = s.replace(",","")
print(s)
Now I need a drink alcoholic of course after the heavy lectures involving quantum mechanics.

Dois-je également supprimer le point à la fin de cela? Si tel est le cas, effectuez deux fois «replace».

datoshitara.py


s = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
s = s.replace(",", "").replace(".", "")
print(s)
Now I need a drink alcoholic of course after the heavy lectures involving quantum mechanics

Très bien, c'est bien.

enshu03.py


s = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
s = s.replace(",", "").replace(".", "")

list = s.split()
#['Now', 'I', 'need', 'a', 'drink', 'alcoholic', 'of', 'course', 'after', 'the', 'heavy', 'lectures', 'involving', 'quantum', 'mechanics']

answer_list = []
for i in list:
    answer_list.append(len(i))
print(answer_list)
[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]

Yay.

04. Symbole d'élément

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." En mots 1, 5, 6, 7, 8, 9, 15, 16, 19 Le premier mot est le premier caractère et 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.

Je ne sais pas ce que vous dites déjà. Vous pouvez utiliser split () pour le décomposer en mots. Vous pouvez probablement découper les personnages.

Créez un tableau associatif (type dictionnaire ou type map) de la chaîne de caractères extraite à la position du mot (quel nombre de mots depuis le début).

Je ne sais pas ce que ça veut dire.

~ 3 minutes googlé ~ <URL de référence> https://web-camp.io/magazine/archives/14815

Ahhhhh. C'est comme un magasin de valeurs clés. Je comprends totalement () Je ne suis pas sûr, mais ↓ Si cela se produit, ça va.

{key1:value1,key2:value2,key3:value3}

Donc la réponse est

{1:H,2:He,3:Li,4:Be,5:B,・ ・ ・}

Je ne sais pas si ça ressemble à ça.

enshu04.py


s = "Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can."

#Diviser par mot
list = s.split()

#Une liste qui ne renvoie qu'un seul caractère si le numéro d'occurrence de ce mot correspond au numéro de cette liste
ichimoziList = [1, 5, 6, 7, 8, 9, 15, 16, 19]

#Sorte de dictionnaire
dic = {}

counter = 1
for i in list:
    if counter in ichimoziList:
        dic[counter] = i[:1]
    else:
        dic[counter] = i[:2]
    counter+= 1
    
print(dic)
{1: 'H', 2: 'He', 3: 'Li', 4: 'Be', 5: 'B', 6: 'C', 7: 'N', 8: 'O', 9: 'F', 10: 'Ne', 11: 'Na', 12: 'Mi', 13: 'Al', 14: 'Si', 15: 'P', 16: 'S', 17: 'Cl', 18: 'Ar', 19: 'K', 20: 'Ca'}

Non! !! C'est fait. ** J'ai pensé, mais le type de dictionnaire est utilisé dans l'ordre de {1: 'H', ...}, alors est-ce correct? ** ** Je me demande si c'est ... {'H': 1, ...} Je me demande lequel est bien (nez hoge)

Ici, la phrase ʻif` apparaît pour la première fois. Faites une liste de «1,5,6,7,8,9,15,16,19» et dites que la liste contient la valeur numérique de l'ordre des mots à traiter. J'ai écrit une branche conditionnelle.

Je n'ai pas l'habitude d'utiliser l'instruction Python for, donc j'ai supprimé le compteur. Cela peut être un peu plus rafraîchissant.

De plus, "ajouter un par un dans le processus itératif" semble être écrit comme compteur + =! Au lieu de compteur ++. Hey!

Ça fait longtemps, je vais donc continuer dans un autre article! !! !! ** Cela a pris 3 heures jusqu'à présent! !! !! !! !! !! !! !! !! !! !! (important)**

Recommended Posts

Une personne inexpérimentée en Python essaie de frapper 100 traitement du langage 14-16
Une personne inexpérimentée en Python essaie de frapper 100 traitement du langage 07-09
Une personne inexpérimentée en Python essaie de frapper 100 traitement du langage 05-06
Une personne inexpérimentée en Python essaie de frapper 100 traitement du langage 00-04
100 coups de traitement du langage avec Python 2015
100 Language Processing Knock Chapitre 1 (Python)
100 Language Processing Knock Chapitre 2 (Python)
100 traitements de langage avec Python
100 Language Processing Knock Chapitre 1 en Python
100 traitements de langage avec Python (chapitre 3)
Le débutant en Python a essayé 100 traitements de langage Knock 2015 (05 ~ 09)
100 Language Processing Knock Chapitre 1 par Python
Le débutant en Python a essayé 100 traitements de langage Knock 2015 (00 ~ 04)
100 coups de traitement linguistique (2020): 28
100 traitements de langage avec Python (chapitre 2, partie 2)
100 traitements de langage avec Python (chapitre 2, partie 1)
100 traitements linguistiques Knock 2020 [00 ~ 39 réponse]
100 langues de traitement knock 2020 [00-79 réponse]
100 traitements linguistiques Knock 2020 [00 ~ 69 réponse]
100 Language Processing Knock 2020 Chapitre 1
100 coups de traitement du langage amateur: 17
Python: traitement du langage naturel
100 Traitement du langage Knock-52: Stemming
100 Traitement du langage Knock Chapitre 1
100 coups de langue amateur: 07
100 Language Processing Knock 2020 Chapitre 3
100 Language Processing Knock 2020 Chapitre 2
100 coups de traitement du langage amateur: 09
Traitement 100 langues knock-53: Tokenisation
100 coups de traitement du langage amateur: 97
100 traitements linguistiques Knock 2020 [00 ~ 59 réponse]
100 langage traitement knock-92 (utilisant Gensim): application aux données d'analogie
[Chapitre 5] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 3] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 2] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 4] Introduction à Python avec 100 coups de traitement du langage
100 traitement du langage Knock-51: découpage de mots
100 Language Processing Knock-57: Analyse des dépendances
100 traitement linguistique knock-50: coupure de phrase
100 Language Processing Knock-25: Extraction de modèles
Traitement du langage 100 Knock-87: similitude des mots
J'ai essayé 100 traitements linguistiques Knock 2020
100 Language Processing Knock-56: analyse de co-référence
Résolution de 100 traitements linguistiques Knock 2020 (01. "Patatokukashi")
100 coups de traitement du langage amateur: Résumé
Traitement du langage 100 knocks-43: Extraire les clauses contenant la nomenclature liée aux clauses contenant des verbes
[Python] Essayez de classer les boutiques de ramen par traitement du langage naturel
100 traitement de la langue knock-42: Affichage de la phrase de la personne concernée et de la personne concernée
Laissez le traitement gênant à Python
100 Language Processing Knock 2020 Chapitre 2: Commandes UNIX
100 Language Processing Knock 2015 Chapitre 5 Analyse des dépendances (40-49)
100 Language Processing Knock 2020 Chapitre 4: Analyse morphologique
100 traitement du langage knock-76 (en utilisant scicit-learn): étiquetage
Introduction à Protobuf-c (langage C ⇔ Python)
100 Language Processing Knock: Chapitre 1 Mouvement préparatoire
100 Traitement du langage Knock Chapitre 4: Analyse morphologique
100 Language Processing Knock 2020 Chapitre 10: Traduction automatique (90-98)
100 Language Processing Knock 2020 Chapitre 5: Analyse des dépendances
100 Language Processing Knock-28: Suppression du balisage MediaWiki
100 Traitement du langage Knock 2020 Chapitre 7: Vecteur de mots
100 Language Processing Knock 2020 Chapitre 8: Neural Net