こんにちは、まさです。今日は『退屈なことは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 英検パス
といれれば、ファイルの中で「英検パス」を使えるということなのです。
素人、文系感満載の説明になりました。いかがでしょうか。
(間違っていたらすいません)。
一応自分的には納得です。
ではまた次回。
➤文字列において、エスケープ文字というものがあり、これによって普通の方法では
文字列に入れられない文字を使うことができる。例えば改行には \nを用いる。3連
クオート(''' ''')を使うとエスケープ文字を使わないでも、改行できる。
1 2 3 4 | >>> print ( "Hello there!\nHow are you?\nI\'m doing fine." ) Hello there! How are you? I'm doing fine. |
➤文字列メソッドにはupper(),lower()などがある。ただし、これは元の文字列を変
更するものではない。
spam.upper()では元の値は変わらない。spam=spam.upper()とかく必要がある。
➤ isX系のメソッドは、ユーザー入力検証に便利。
➤ 引数(ひきすう)はargumentの訳らしい。ん?「因数」の方が漢字的にまだ訳としてあうんじゃないか?引数という言葉そもそもの意味が分からなくなったので、検索。この方の説明がわかりやすかった。https://wa3.i-3-i.info/word1442.html
➤プロジェクトのパスワードロッカーやってみました。コードがこれです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | PASSWORDS = { '英検' : '111111' , 'クレジット' : 'Qir3333' , '定期' : 'qw355' } import sys import pyperclip if len (sys.argv) < 2 : print ( '使い方 : python pw.py [アカウント名]' ) print ( 'パスワードをクリップボードにコピーします' ) sys.exit() account = sys.argv[ 1 ] if account in PASSWORDS: pyperclip.copy(PASSWORDS[account]) print (account + 'のパスワードをクリップボードにコピーしました' ) else : print (account + 'というアカウント名はありません' ) |
打ち込むのは、python pw.py [アカウント名]で、いれるとそのパスが表示されます。打ち込んだのが、「python pw.py 英検」で、実行するとこういう感じです。
1 2 | MacBook - Air:Python folder$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 英検パス
といれれば、ファイルの中で「英検パス」を使えるということなのです。
素人、文系感満載の説明になりました。いかがでしょうか。
(間違っていたらすいません)。
一応自分的には納得です。
ではまた次回。
No comments:
Post a Comment