ど文系の中学校英語教員がプログラミング言語Pythonを学んでみた 18日目 文字列操作の巻

Sunday 15 March 2020

プログラミングとPython

 こんにちは、まさです。今日は『退屈なことはPythonにやらせよう』の第6章「文字列操作」です。この辺まできて、「あれ、これ学んで教員として意味あるのかな」というささやきが聞こえてきましたが、まあ気長に、プログラミングの仕組みをしる程度のために続けていきます。

➤文字列において、エスケープ文字というものがあり、これによって普通の方法では
 文字列に入れられない文字を使うことができる。例えば改行には \nを用いる。3連
 クオート('''   ''')を使うとエスケープ文字を使わないでも、改行できる。


➤文字列メソッドにはupper(),lower()などがある。ただし、これは元の文字列を変
 更するものではない。
 spam.upper()では元の値は変わらない。spam=spam.upper()とかく必要がある。

➤ isX系のメソッドは、ユーザー入力検証に便利。

➤ 引数(ひきすう)はargumentの訳らしい。ん?「因数」の方が漢字的にまだ訳としてあうんじゃないか?引数という言葉そもそもの意味が分からなくなったので、検索。この方の説明がわかりやすかった。https://wa3.i-3-i.info/word1442.html

➤プロジェクトのパスワードロッカーやってみました。コードがこれです。
 
 打ち込むのは、python  pw.py [アカウント名]で、いれるとそのパスが表示されます。打ち込んだのが、「python pw.py 英検」で、実行するとこういう感じです。
  
  これ[アカウント名]のところに入れるのは、名前だけであって、[ ]いらないですからね。私はそれわかるのに1時間費やしています。

 で、思ったように動作はしましたが、コードを理解したかといえば、ううー、よくわかりません。input はいらないのという疑問、sys.argvが何をしているのかという疑問。またわかったら追記します。

 追記:コマンドライン引数について、2時間かけてなんとなくわかったので、説明してみます。(違ったらすいません)。
  
 コマンドライン引数のポイントは、ファイルを実行する時に、引数を渡せるということでしょうか。Pythonでファイルを実行する時、

 python folder名.py

 で、実行しますよね。このときに、

 python folder名.py 英検パス 定期パス

とか適当にくっつけられるわけです。このくっつけたのがコマンドライン引数。

 で、くっつけるとどういう効果があるかというと、実行してファイルを開いた時に、これを使えるというわけです。そこででてくるのが、sys.argv[ ]関数。これは何をしてくれるかというと、さっき実行のときに後ろにつけた「英検パス」「漢検パス」を上から引っ張ってきてくれるのです(だから引数なのか)。
sys.argv[0]はファイル名
sys.argv[1] は英検パス
sys.argv[2]は定期パス
になります。
 つまり、このパスワードロッカーでいえば、
folder名.py アカウント名
 でこのアカウント名が、sys.argv[1]にあたるわけで、例えば
folder名.py 英検パス
 といれれば、ファイルの中で「英検パス」を使えるということなのです。

 素人、文系感満載の説明になりました。いかがでしょうか。
 (間違っていたらすいません)。
 一応自分的には納得です。

 ではまた次回。