Python でfor文 JSでいう (let i = 0; i < 10; i++){}を使いたい

Python for文書き方

PythonでJavaScriptでいうfor (let i = 0; i < 10; i++){}をしたい場合

//JavaScriptでのfor文
for (let i = 0; i < 10; i++){
    console.log(i)
}
# Pythonでのfor文
for i in range(10):
    print(i)

rangeというのを使うようでした。rangeはクラスで複数コンストラクタを持っているのでrange(5,10)と書き換えて実行すると5〜9がprintされます

配列とカウントを組み合わせて使いたい場合は、enumerateクラスが使えます。enumerateクラスも複数のコンストラクタを持っています。下記プログラム例は、代表的な使い方です。

_l:list = ["Д-503","Ю","I-330"] 
for i in enumerate(_l, 0):
    print(i)
Python for文 enumerate実行例

Python Base64でエンコードされたHMACSHA256ハッシュ文字列

Base64でエンコードされたHMACSHA256ハッシュ文字列

HMAC SHA256ハッシュした文字列をBase64エンコードした文字列は、REST APIでよく利用されています。Pythonの標準ライブラリだけでHMAC SHA256ハッシュ化しBase64エンコードも可能です。コード例は、2行程度です。

import hashlib
import hmac
import base64

secretKey = 'mjeld1234'
message = '文字列'

signature = hmac.new(key=bytes(secretKey,'utf-8'), msg=bytes(message,'utf-8'), digestmod=hashlib.sha256).digest()
base64_signature = base64.b64encode(signature).decode()

print(base64_signature)

hashlib,hmac,base64この3つのライブラリをimportして使います

実行するとprint()には「KEmHEG1L9Y/2kRXNf/zIMfwf4NKIXX70qqjjIgCx3qc=」が表示されます。Base64エンコードを行わない場合下記のように1行で記述できます。

import hashlib
import hmac

secretKey = 'mjeld1234'
message = '文字列'

signature = hmac.new(key=bytes(secretKey,'utf-8'), msg=bytes(message,'utf-8'), digestmod=hashlib.sha256).hexdigest()
print(signature)

digest()部分をhexdigest()に変えていま。hexdigest()は「string of hexadecimal」ということらしいです

Python VSCode ModuleNotFoundErrorが起きた場合

Python Select Interpreter ModuleNotFoundError

VSCodeを使ってPythonのスクリプト便利ですよね。昔ながらのF5デバッグ実行もできるし。

そんなVSCodeで、ある日突然ModuleNotFoundErrorが出て、Pythonモジュールが読込できなくなりました。エラーは下記です。

例外が発生しました: ModuleNotFoundError
No module named 'openpyxl'

エディターを見るとimportの行が波線マーク

importが波線

調べてみるとInterpreter設定のパスが、何かの影響で変わってしまったようでした

そのInterpreter設定を変更する方法は、VSCode上で[F1]を押し「Python: Slect Interpreter」を選択します。

Python: Select Interpreter

パスが選択できるので私の場合「/usr/local/bin/python3」を選択

/usr/local/bin/python3を選択

上記の方法でVSCodeでのModuleNotFoundErrorは回避できました