見出し画像

初心者が1からプログラミング(Python)を学んでみた Part14 - Inputと自動化

こんにちはー。かなりお久しぶりです。今日の話はPythonのスクリプト外から引数として引用する話です。

input()

Pythonのパッケージ上にすでに含まれるinput()を使うことでスクリプトの外から引用することができます。形としては

name = input()

のような形です。このinput()が出るたびにPythonはその場でストップして入れるものを聞いてきます。何かしら入れないと先には進みませんので注意。🚨またターミナル上で何も足さずにEnterを押しても何も入ってないことになりエラーになりやすくなります。上のコードのままだとターミナルで走らせた時何も出ないのでわかりやすく下のような形にしてみました。

input()を使ったPython例題とその実行結果。

input()の中にStringを入れることによってprint()機能と同じ形でターミナル上に文字が出されます。String内に入っているものは設定によって日本語でもオッケーですが基本Python上に日本語があると読み込めずにエラーになるので注意です。ターミナル上ではまず①で留まり、何かしらを入れないと先に進まず2行目以降が出されません。聞かれたものを入れてEnterを押して先に進めるようになります。最後のprint()内で出したf-stringはPart13に詳しく載せました。またinput()で入れられたものは絶対にStringの形になるので、後々計算に使う場合は③のようにint()もしくはfloat()に当てはめて形を変えてから使います。これでPython内で毎度変えなくてもテンプレを使って自分の好きなものを表示したり計算に入れることができるようになります。

sys.argv[]

こちらはinput()と似たようで少し違う形のものです。sysのパッケージを使いますのでまずはこれ!!!

import sys

他の人が作った便利な機能をどんどん使いましょう。ちなみにargvは”argumet vector"の略です。使い方としては下のような感じです。

sys.argvを使った例題。

まずは間違った使い方から!!!

間違った使い方。

上の写真では今まで通りにターミナル上で”python+ファイル名”で走らせました。ただしこれはエラーとなり止まります。今sys.argvを使っていることによってターミナル上から引数を必要としています。正しい使い方としては下になります。

正しい使い方。

スクリプト上に今sys.argv[1]とsys.argv[2]が存在することによってターミナル上に2つの引数がスクリプト名以外に必要になります。(Pythonは絶対にカウントが0からスタートするので0番目が1番始めのもの。)結果を見るとsys.argv[0]にファイル名input_practice.pyが入り、1にKinako、2にAprilが入ってきます。

自動化でミスを減らす

上の使い方だとミスを誘発しやすくなるそうです。この時代、コンピューターが発展して計算ミスやデータ処理のミスが格段に減り目立つようになったのがヒューマンエラー(人によるミスなど)だそうです。スクリプトを何度も使い回しすることでinput()に入れるとこのスペルミスや数字指定の場所に誤って文字を入れたりが起こり得たり、sys.argvを忘れてスクリプト名の後に何も入れずに走らせるともちろん上記のエラーが出されたりします。自動化でなるべく人が触らないようにしてすべてPCに任せた方がエラーも減ると習いました。こちらではsys.argvのミスを減らすため自動化された形を載せておきます。上記の正しいターミナルの使い方をまずはコピーして新規ファイルに貼り付けます。この場合、ファイル名は”____.sh"(下写真①)。

bashを使って自動化した形。

”____.sh"の形はbashの一部で、習うと便利機能がたくさんあるそうです。(ここでは触れません。)ターミナルで走らせる時は”python+ファイル名”の変わりに”sh(もしくはbash)+ファイル名”を入れます。上の写真では今回作ったinput_practice.pyのファイルを2回違う引数で試したものを1つのbashファイルにまとめました。結果を見ても2回分表示されてます(②、③)。

おまけ

Part3でもっとも簡潔でもっともよく使うTerminalのコマンドを貼りました⏬⏬⏬

これ以外に今回は"cp file1 file2"と"mv file1 file2"を少し習いました。cpを使うことでfile1の内容を丸々file2という違う名前のファイルにコピーできます。ファイル名は.pyや.txtなど違う形態のファイルでも使えるそうです。ファイルと同じ形でディレクトリのコピーも”cp+ディレクトリ名1+ディレクトリ名2”で簡単にできます。またmvを使うことでfile1を完全に別名のfile2にそっくり移動も可能です。ディレクトリも同じく全部一括で移動(move)したい時に使います。Part3 でも載せました、英語版の使い方まとめページが例題もあり見やすいので載せておきます。⏬

今日はこの辺で。

その15に続きます。(不定期)

いいなと思ったら応援しよう!