3.パスワードを解読する世界(2)


己を知り彼を知り,百戦危うからず,己を知り彼を知り,一戦必ず勝つ
-孫だ
前回の時間に続いて解読を続けましょう.
手順3.
if (len(sys.argv) != 3):
    print("wordcount.py input_file output_dir 형태로 실행해 주세요")
    sys.exit(0)
else:
    inputfile = sys.argv[1]
    outputdir = sys.argv[2]
「if」という言葉から推測できる
場合
条件文を書くことができます.

だからif文には条件が書かれています
条件は次のとおりです.
len(sys.argv) != 3
ちなみに「len」は「length」の略で、長さを意味します.
Pythonの世界では、長さは単語の数です.
例を見てみましょう.
>>> a = 'apple'
>>> b = 'bear'
>>> print(len(a))
5
>>> print(len(b))
4
これがlen()関数です.
そして、Pythonの世界では、「aとbは同じ」という文が
a == b
.
前回の文章で言ったように.
a=b絶対じゃない!
(これは、aという変数がbを含むことを意味する!)
逆に、「aとbは違う」という文
a != b
こう表現する
最後に「sys.argv」
sysというモジュールにはargvという機能があります.
argvは「パラメータベクトル」の略です.
パラメータ値.
パラメータ値とは、関数(機能)を呼び出す場合
関数に渡される値.
通常、Pythonファイルを実行する場合
パラメータ値を得て処理します.
その時はSYargvを器として値段を詰めることができます.
例えば、hello.pyというPythonファイルがあります.
hello.pyファイルには次のフォーマットがあります.
import sys

print(sys.argv)
この言葉はhellopyファイルには、次のものが含まれます.
Sysが読み込まれ、インストールされています.
すなわち,sysの機能でargvを用いることができる.
次にprint()という関数(機能)を使用します.
sys.argvという茶碗にどんな値が入っているかを見ることができます.
この状態で、端末上で
C:\python>python hello.py hi
入力した場合
['hello.py', 'hi']
このような配列値が生成される.
システム.これはargvがそれらの値を生成することを意味する.
配列をリストと呼びます.
Pythonワールドでは、リストの順番は
日常の世界とは順序が違う.
日常生活で1つ目は1、2つ目は2、3つ目は3、
このように数えるのが常識です.
しかしPythonの世界では違います.
1つ目は0、2つ目は1、3つ目は2です.
なぜか聞かないでください.
私もこれをしている人に苦情を言いたいです.
なぜ人間の常識や習慣から外れたことを…!

とりあえずこのままSYargvに値を挿入します.
リストを生成できます.
リストに表示される値を順番に表示するには、
리스트[숫자]
書くだけでいいです.
では、例を挙げてみましょう.
sys.argv = ['hello.py', 'hi']
>>> print(sys.argv[0])
hello.py'
>>> print(sys.argv[1])
'hi'
いいですよ.
つまり、最初の値はファイルのパス、すなわち名前です.
2番目の値からパラメータ値です.
そして質問に入りましょう
問題の条件文からわかる
if (len(sys.argv) != 3):
    print("wordcount.py input_file output_dir 형태로 실행해 주세요")
    sys.exit(0)
wordcount.pyというPythonファイルを作成します.
Pythonファイルのパラメータ値を「input file」と「output dir」に設定します.
条件文を作成しています.
wordcountならpyがこの条件を満たす場合
wordcount.pyのsys.argvは
sys.argv = ['wordcount.py', 'input_file', 'output_dir']
.
前に述べたlen()関数を覚えていますか?
リストでlen()関数を使用する場合
リスト内の値の数.
システムargv内の値を計算すると、
こう書いてあるなら、
>>> print(len(sys.argv))
3
になる.
wordcountです.pyの設定が正しいことを条件とします.
wordcountならpyが正しく設定されていない場合
len()関数を使用すると3は表示されません.
「wordcount.pyinput file output dirとして実行してください」
ということで.
sysをexit、すなわち「終了」に設定します.
条件が満たされたら.
>>> sys.argv[1]
'input_file'
>>> sys.argv[2]
'output_dir'
になります.
じゃあ次へ飛び出そう
else:
    inputfile = sys.argv[1]
    outputdir = sys.argv[2]
「else」は「そうでなければ」という意味です.
あなたの条件に合わない場合は、
起こったことを設定する.
つまり、そんなことが起こったら
Sys変数の名前は「inputfile」です.argv[1]を挿入します.
「outputdir」という変数に対してsys.argv[2]を挿入します.
ふーん!難しいですね.
私もこれを研究するために苦労しました!
でもやった!
今日はここでまた会おう!