Pythonの勉強を再開

長らくご無沙汰になっていたPython。プログラマーではない学習者が、いかに実務でどう活用するか?という点が難しいと感じていて、学習も次第に遠ざかっていきました。前回の投稿は、ほぼ1年前。おぉ....

GAS(Google Apps Script)は、必要に迫られて覚えたのに対して、現状、Pythonは自分の業務範囲だと、あまり使いどころがないという事情があります。日本人しかいない職場で、いつ使うか分からない英語学習をするようなイメージでしょうか。目的意識が弱いという自覚があります。

ノンプロ研の主催者の高橋さんが8月に上梓された、下記の本を購入したことがPythonの勉強を再開するきっかけとなりました。内容としては、Pythonの基礎を一通り触れた後、Excel操作、PDF操作、スクレイピング、画像操作、QRコード、ZIPファイルの操作がマスター出来るようになっています。

躓いたところ

まず、Visual Studio Codeのインストール、環境構築で躓きました。ノンプログラマーにとって環境構築は一つの壁ですね。GASやVBAでは初めからバンドルされているものね。

conda : The term 'conda' is not recognized as the name of a cmdlet, function, script f
ile, or operable program. Check the spelling of the name, or if a path was included, v
erify that the path is correct and try again.
At line:1 char:1
+ conda activate base
+ ~~~~~
   + CategoryInfo         : ObjectNotFound: (conda:String) [], CommandNotFoundExcep
  tion
   + FullyQualifiedErrorId : CommandNotFoundException

ANACONDAを、再インストールすることで解決ッ!!

画像1

Anacondaのインストール画面で、デフォルトでは環境変数Pathにチェックを入れないことになっているため起こるエラーだと推測します。
対処としては、次の2点が一般的です。再インストールが楽かなーとは。

・「Add Anacond3...」にチェックを入れて再インストール
・ Anacondaの実行ファイルを環境変数Pathに登録

ノンプロ研で質問をして、上記頂いたアドバイス通りANACONDAを一度アンインストールして、環境変数にチェックを入れる事で解決できました。アンストの仕方、Windows 7の知識で止まっていたので調べました。

他にも下記のようなアドバイスを頂きました。こちらは僕の知識不足が原因で意味が分かりませんでした。というより、ファイル破損とかしたら自分で直せないなと思ったため、自重しました。

設定からでterminal.integrated.shell.windowsでjson.setteing開いてこれいれたらいけると思います。
{
   "terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe",
}
ちょうどPCリセットしてちょっとはまってました。

画像2

画像3

もう一つ、Linux有効化してLinux版をインストールして動かす方法もあるようです。こちらはChrome OS向き。

書籍内のサンプルコードを動かして確認

num = 1

for i in range(110):
   num *= 2
   print(i, num)

   #numが20を上回った時に処理を中断する
   if num > 20:
       break

iに2をかけて、20を超えたところで処理を中断するというスクリプトです。

for i in range(110):
   if i % 3 == 0 or i % 5 == 0:
       print(i)

3か5で割り切れる場合は出力する

# 3, 5, 6, 9がスキップされる
for i in range(110):
   if i % 3 == 0 or i % 5 == 0:
       continue
   print(i)

実際には、こちらの方が実用性が高いかも。

for i in range(14):
   for j in range(13):
       print(f'i = {i}, j = {j}')

for文を入れ子にしたスクリプト。多分、Excelなどを操作する際の2次元リスト操作の基本になるのだと思います。

i = 1, j = 1
i = 1, j = 2
i = 2, j = 1
i = 2, j = 2
i = 3, j = 1
i = 3, j = 2
# start, stop, step
# -5ずつ進む
for i in range(10-10-5):
   print(i)

iは、10から−10までの値を取り、-5ずつ減っていくというスクリプトです。

msg = 'Hello'
print(msg)
print(f'・msg[0]', msg[0])
print(f'・msg[1:3]', msg[1:3])
print(f'・msg[::2]', msg[::2])
print(f'・msg[:]', msg[:])

文字列を取り出すスクリプトです。

msg = 'Hello!'
for char in msg:
   print(char)

文字列を1文字ずつ取り出すスクリプトです。

name = 'Tim'
age  = 31
print(f'{name}の年齢は、{age}歳です。'

print 出力時に変数を出力させるスクリプトです。

number = [10203040]
print(number[0])
print(number[-1]) #一番最後の要素を出力できる
print(number[:])

配列、リストの操作

msg = 'Hello!'
print(f'msg == "Hello!"', msg == 'Hello!')
print(f'msg != "Hello!"', msg != 'Hello!')
print(f'"!"in msg''!' in msg)
print(f'"!"not in msg''!' not in msg)

f要らないかも.....。

msg  = 'My name is Bob'
name = 'Tim'
if(name in msg):
   print (f'変数 msg {msg}に "{name}" という単語が含まれていました。')
else:
   print (f'変数 msg {msg}に "{name}" という単語が含まれていませんでした。')

GASだと、includesやindexOfを使った条件分岐をよく使うので、こちらも実用的かもしれません。

現在、第2部の文法編、120ページくらいまで学習しました。やっぱりまだ、実務で役立つというレベルには至っていないものの、GASでの自動化経験から、これは後で使えそうだなというのが見えてきている感じです。新しい変化を拒む脳を上手く騙して、学習を続けたいなと思っています。

この記事が気に入ったらサポートをしてみませんか?