[PYTHON] 100 coups de traitement du langage amateur: 15

C'est un record de défi de 100 langues de traitement knock 2015. L'environnement est Ubuntu 16.04 LTS + Python 3.5.2 : : Anaconda 4.1.1 (64 bits). Cliquez ici pour une liste des coups passés (http://qiita.com/segavvy/items/fb50ba8097d59475f760).

Chapitre 2: Principes de base des commandes UNIX

hightemp.txt est un fichier qui stocke l'enregistrement de la température la plus élevée au Japon dans le format délimité par des tabulations de «préfecture», «point», «℃» et «jour». Créez un programme qui effectue le traitement suivant et exécutez hightemp.txt en tant que fichier d'entrée. De plus, exécutez le même processus avec une commande UNIX et vérifiez le résultat de l'exécution du programme.

15. Sortez les N dernières lignes

Recevoir le nombre naturel N au moyen d'un argument de ligne de commande, et n'afficher que les N dernières lignes de l'entrée. Utilisez la commande tail pour confirmation.

Le code fini:

main.py


# coding: utf-8

fname = 'hightemp.txt'
n = int(input('N--> '))

if n > 0:
	with open(fname) as data_file:
		lines = data_file.readlines()

	for line in lines[-n:]:
		print(line.rstrip())

Résultat de l'exécution:

Terminal


segavvy@ubuntu:~/document/100 traitement du langage Knock 2015/15$ python main.py 
N--> 1
Préfecture d'Aichi Nagoya 39.9	1942-08-02
segavvy@ubuntu:~/document/100 traitement du langage Knock 2015/15$ python main.py 
N--> 2
39 Tsuruoka, Préfecture de Yamagata.9	1978-08-03
Préfecture d'Aichi Nagoya 39.9	1942-08-02
segavvy@ubuntu:~/document/100 traitement du langage Knock 2015/15$ python main.py 
N--> 23
40 Kumagai, Préfecture de Saitama.9	2007-08-16
40 Tajimi, Préfecture de Gifu.9	2007-08-16
Yamagata 40 Yamagata.8	1933-07-25
Préfecture de Yamanashi Kofu 40.7	2013-08-10
Préfecture de Wakayama Katsuragi 40.6	1994-08-08
Préfecture de Shizuoka Tenryu 40.6	1994-08-04
40 Katsunuma, préfecture de Yamanashi.5	2013-08-10
40 Koshiya, Préfecture de Saitama.4	2007-08-16
Préfecture de Gunma Tatebayashi 40.3	2007-08-16
Préfecture de Gunma Kamisatomi 40.3	1998-07-04
Ainishi 40, Préfecture d'Aichi.3	1994-08-05
Préfecture de Chiba Ushihisa 40.2	2004-07-20
Préfecture de Shizuoka Sakuma 40.2	2001-07-24
40 Uwajima, Préfecture d'Ehime.2	1927-07-22
40 Sakata, Préfecture de Yamagata.1	1978-08-03
Mino 40, préfecture de Gifu 2007-08-16
Préfecture de Gunma Maebashi 40 2001-07-24
39 Shigehara, Chiba.9	2013-08-11
39 Hatoyama, Préfecture de Saitama.9	1997-07-05
Toyonaka 39, Osaka.9	1994-08-08
Otsuki, Yamanashi 39.9	1990-07-19
39 Tsuruoka, Préfecture de Yamagata.9	1978-08-03
Préfecture d'Aichi Nagoya 39.9	1942-08-02
segavvy@ubuntu:~/document/100 traitement du langage Knock 2015/15$ python main.py 
N--> 24
Préfecture de Kochi Egawasaki 41 2013-08-12
40 Kumagai, Préfecture de Saitama.9	2007-08-16
40 Tajimi, Préfecture de Gifu.9	2007-08-16
Yamagata 40 Yamagata.8	1933-07-25
Préfecture de Yamanashi Kofu 40.7	2013-08-10
Préfecture de Wakayama Katsuragi 40.6	1994-08-08
Préfecture de Shizuoka Tenryu 40.6	1994-08-04
40 Katsunuma, préfecture de Yamanashi.5	2013-08-10
40 Koshiya, Préfecture de Saitama.4	2007-08-16
Préfecture de Gunma Tatebayashi 40.3	2007-08-16
Préfecture de Gunma Kamisatomi 40.3	1998-07-04
Ainishi 40, Préfecture d'Aichi.3	1994-08-05
Préfecture de Chiba Ushihisa 40.2	2004-07-20
Préfecture de Shizuoka Sakuma 40.2	2001-07-24
40 Uwajima, Préfecture d'Ehime.2	1927-07-22
40 Sakata, Préfecture de Yamagata.1	1978-08-03
Mino 40, préfecture de Gifu 2007-08-16
Préfecture de Gunma Maebashi 40 2001-07-24
39 Shigehara, Chiba.9	2013-08-11
39 Hatoyama, Préfecture de Saitama.9	1997-07-05
Toyonaka 39, Osaka.9	1994-08-08
Otsuki, Yamanashi 39.9	1990-07-19
39 Tsuruoka, Préfecture de Yamagata.9	1978-08-03
Préfecture d'Aichi Nagoya 39.9	1942-08-02

La commande UNIX a été confirmée par le script shell.

test.sh


#!/bin/sh

#Entrez N
echo -n "N--> "
read n

#Coupé
tail --lines=$n hightemp.txt

Résultat de l'exécution:

Terminal


segavvy@ubuntu:~/document/100 traitement du langage Knock 2015/15$ ./test.sh
N--> 1
Préfecture d'Aichi Nagoya 39.9	1942-08-02
segavvy@ubuntu:~/document/100 traitement du langage Knock 2015/15$ ./test.sh
N--> 2
39 Tsuruoka, Préfecture de Yamagata.9	1978-08-03
Préfecture d'Aichi Nagoya 39.9	1942-08-02
segavvy@ubuntu:~/document/100 traitement du langage Knock 2015/15$ ./test.sh
N--> 23
40 Kumagai, Préfecture de Saitama.9	2007-08-16
40 Tajimi, Préfecture de Gifu.9	2007-08-16
Yamagata 40 Yamagata.8	1933-07-25
Préfecture de Yamanashi Kofu 40.7	2013-08-10
Préfecture de Wakayama Katsuragi 40.6	1994-08-08
Préfecture de Shizuoka Tenryu 40.6	1994-08-04
40 Katsunuma, préfecture de Yamanashi.5	2013-08-10
40 Koshiya, Préfecture de Saitama.4	2007-08-16
Préfecture de Gunma Tatebayashi 40.3	2007-08-16
Préfecture de Gunma Kamisatomi 40.3	1998-07-04
Ainishi 40, Préfecture d'Aichi.3	1994-08-05
Préfecture de Chiba Ushihisa 40.2	2004-07-20
Préfecture de Shizuoka Sakuma 40.2	2001-07-24
40 Uwajima, Préfecture d'Ehime.2	1927-07-22
40 Sakata, Préfecture de Yamagata.1	1978-08-03
Mino 40, préfecture de Gifu 2007-08-16
Préfecture de Gunma Maebashi 40 2001-07-24
39 Shigehara, Chiba.9	2013-08-11
39 Hatoyama, Préfecture de Saitama.9	1997-07-05
Toyonaka 39, Osaka.9	1994-08-08
Otsuki, Yamanashi 39.9	1990-07-19
39 Tsuruoka, Préfecture de Yamagata.9	1978-08-03
Préfecture d'Aichi Nagoya 39.9	1942-08-02
segavvy@ubuntu:~/document/100 traitement du langage Knock 2015/15$ ./test.sh
N--> 24
Préfecture de Kochi Egawasaki 41 2013-08-12
40 Kumagai, Préfecture de Saitama.9	2007-08-16
40 Tajimi, Préfecture de Gifu.9	2007-08-16
Yamagata 40 Yamagata.8	1933-07-25
Préfecture de Yamanashi Kofu 40.7	2013-08-10
Préfecture de Wakayama Katsuragi 40.6	1994-08-08
Préfecture de Shizuoka Tenryu 40.6	1994-08-04
40 Katsunuma, préfecture de Yamanashi.5	2013-08-10
40 Koshiya, Préfecture de Saitama.4	2007-08-16
Préfecture de Gunma Tatebayashi 40.3	2007-08-16
Préfecture de Gunma Kamisatomi 40.3	1998-07-04
Ainishi 40, Préfecture d'Aichi.3	1994-08-05
Préfecture de Chiba Ushihisa 40.2	2004-07-20
Préfecture de Shizuoka Sakuma 40.2	2001-07-24
40 Uwajima, Préfecture d'Ehime.2	1927-07-22
40 Sakata, Préfecture de Yamagata.1	1978-08-03
Mino 40, préfecture de Gifu 2007-08-16
Préfecture de Gunma Maebashi 40 2001-07-24
39 Shigehara, Chiba.9	2013-08-11
39 Hatoyama, Préfecture de Saitama.9	1997-07-05
Toyonaka 39, Osaka.9	1994-08-08
Otsuki, Yamanashi 39.9	1990-07-19
39 Tsuruoka, Préfecture de Yamagata.9	1978-08-03
Préfecture d'Aichi Nagoya 39.9	1942-08-02

Le résultat était le même.

De plus, j'ai vérifié «si n> 0» parce que j'ai remarqué que lorsque 0 était entré, la spécification de tranche devenait «lines [0:]» et toutes les lignes réussissaient. .. Cependant, dans ce coup, je pense que l'entrée en dehors de la plage n'est pas destinée à être demandée, et il aurait peut-être mieux valu l'ignorer que de la mettre à mi-chemin.   C'est tout pour le 16e coup. Si vous avez des erreurs, j'apprécierais que vous les signaliez.

Recommended Posts

100 coups de traitement du langage amateur: 71
100 coups de traitement du langage amateur: 56
100 coups de traitement du langage amateur: 24
100 coups de traitement du langage amateur: 50
100 coups de traitement du langage amateur: 59
100 coups de traitement du langage amateur: 70
100 coups de traitement du langage amateur: 62
100 coups de traitement du langage amateur: 60
100 coups de traitement du langage amateur: 92
100 coups de langue amateur: 30
100 coups de langue amateur: 06
100 coups de traitement du langage amateur: 84
100 coups de traitement du langage amateur: 81
100 coups de langue amateur: 33
100 coups de traitement du langage amateur: 46
100 coups de traitement du langage amateur: 88
100 coups de traitement du langage amateur: 89
100 coups de traitement du langage amateur: 40
100 coups de traitement du langage amateur: 45
100 coups de traitement du langage amateur: 43
100 coups de traitement du langage amateur: 55
100 coups de traitement du langage amateur: 22
100 coups de traitement du langage amateur: 61
100 coups de traitement du langage amateur: 94
100 coups de traitement du langage amateur: 54
100 coups de langue amateur: 04
100 coups de traitement du langage amateur: 63
100 coups de traitement du langage amateur: 78
100 coups de traitement du langage amateur: 12
100 coups de traitement du langage amateur: 14
100 coups de langue amateur: 08
100 coups de traitement du langage amateur: 19
100 coups de traitement du langage amateur: 73
100 coups de traitement du langage amateur: 75
100 coups de traitement du langage amateur: 98
100 coups de traitement du langage amateur: 83
100 coups de traitement du langage amateur: 95
100 coups de traitement du langage amateur: 32
100 coups de traitement du langage amateur: 87
100 coups de traitement du langage amateur: 79
100 coups de traitement du langage amateur: 23
100 coups de langue amateur: 05
100 coups de langue amateur: 00
100 coups de langue amateur: 02
100 coups de traitement du langage amateur: 68
100 coups de traitement du langage amateur: 11
100 coups de traitement du langage amateur: 74
100 coups de traitement du langage amateur: 66
100 coups de traitement du langage amateur: 28
100 coups de traitement du langage amateur: 64
100 coups de traitement du langage amateur: 34
100 coups de traitement du langage amateur: 36
100 coups de traitement du langage amateur: 77
100 coups de langue amateur: 01
100 coups de traitement du langage amateur: 16
100 coups de traitement du langage amateur: 27
100 coups de traitement du langage amateur: 10
100 coups de traitement du langage amateur: 03
100 coups de traitement du langage amateur: 82
100 coups de traitement du langage amateur: 69
100 coups de traitement du langage amateur: 53