Python 量子運算(一):量子電路
2022/11/16
-----
Outline
一、進入 colab
二、切換至英文介面
三、顯示行號
四、安裝 qiskit
五、維持好的 coding style
六、將 Python 代碼轉成 HTML
七、代碼 1.1
-----
Fig. 1.1. A quantum circuit.
-----
一、進入 colab
Colab 是 Google 提供的免費線上程式開發環境。大部分常使用的元件都已經安裝好,用網頁登入即可寫程式。
使用時可先以 Gmail 登入。再依此連結「https://colab.research.google.com/」,選擇右下角「新增筆記本」,或左方某 .ipynb 檔 [1]。
-----
二、切換至英文介面
「說明 -> 查看英文版本」。
-----
三、顯示行號
「Tools -> Settings -> Editor -> show line numbers」[2]。
-----
四、安裝 qiskit
左上角「+ Code」。
輸入以下兩行安裝指令「
!pip install qiskit
!pip install qiskit[visualization
]」[3]。
-----
五、維持好的 coding style
在 Colab 上使用 pylint 協助維持良好的 coding style [4] - [6]。
先依下列指令安裝「
!pip install pycodestyle pycodestyle_magic
!pip install flake8
%load_ext pycodestyle_magic
」[6]。
然後在你想要 lint 的任何單元格的頂部添加「
%%pycodestyle
」(注意:%%pycodestyle 後面不要跟註解的 # 連在一起)[6]。
若已遵循 Flake8 Rules 的 Best practice,卻出現「W391 blank line at end of file」的警告訊息,可忽略 [7]。
-----
六、將 Python 代碼轉成 HTML
可使用「Source code beautifier」 [8]。
-----
七、代碼 1.1
1 2 3 4 5 6 7 | # Program 1.1:qubit(quantum bit) and cbit(classical bit) from qiskit import QuantumCircuit qc1 = QuantumCircuit(5, 4) qc1.measure([0, 3, 4], [0, 2, 3]) # qc1.draw() qc1.draw('mpl') |
解說:
LINE 1 註解
LINE 2 匯入模組
LINE 3 空行
LINE 4 建立一個有 5 個量子位元與 4 個經典位元的量子電路 [9]。
LINE 5 建立量測量子位元與經典位元的關係,q0、q3、q4 對應 c0、c2、c3 [10]。中括號表示這是一個 Python 的 list(四種主要的 Python 資料型態分別是 list、tuple、set、dictionary) [11]。
LINE 6 繪圖(可比較與 LINE 7 的不同)。
LINE 7 繪圖(mpl 為 matplotlib 的縮寫) [12]。
若已啟用 google drive,則增修以下四行指令「
import matplotlib.pyplot as plt
fig, ax1 = plt.subplots(figsize=(16, 16))
qc1.draw('mpl', ax=ax1)
plt.savefig('/content/drive/My Drive/pqc/0001_001.png')
」
可以將輸出的圖形存檔,如 Fig. 1.1.。
-----
References
# colab
[1] Google Colab
https://colab.research.google.com/
# line numbers
[2] python - How to show line numbers in Google Colaboratory? - Stack Overflow
https://stackoverflow.com/questions/49182502/how-to-show-line-numbers-in-google-colaboratory
# qiskit
[3] 輕鬆學量子程式設計
https://staff.csie.ncu.edu.tw/jrjiang/qbook/
# coding style
[4] The ultimate Python style guidelines - Blog | luminousmen
https://luminousmen.com/post/the-ultimate-python-style-guidelines
# pylint
[5] Python coding style 1: 基本概念 & linter – ianlini
# colab pylint
[6] Is there a python style checker that works on notebooks in google colab? - Stack Overflow
# blank line
[7] Blank line at end of file (W391)
https://www.flake8rules.com/rules/W391.html
# 代碼轉 HTML
[8] Source code beautifier / syntax highlighter – convert code snippets to HTML « hilite.me
# QuantumCircuit
[9] QuantumCircuit — Qiskit 0.39.2 documentation
https://qiskit.org/documentation/stubs/qiskit.circuit.QuantumCircuit.html
# measure
[10] qiskit.circuit.QuantumCircuit.measure — Qiskit 0.39.2 documentation
https://qiskit.org/documentation/stubs/qiskit.circuit.QuantumCircuit.measure.html
# list
[11] Python Lists
https://www.w3schools.com/python/python_lists.asp
# draw
[12] qiskit.circuit.QuantumCircuit.draw — Qiskit 0.39.2 documentation
https://qiskit.org/documentation/stubs/qiskit.circuit.QuantumCircuit.draw.html
# 如書名所說,是本好書
[13] 博客來-必學!Python 資料科學‧機器學習最強套件:NumPy、Pandas、Matplotlib、OpenCV、scikit-learn、tf.Keras
https://www.books.com.tw/products/0010888154
-----
Python 量子運算(目錄)
https://mandhistory.blogspot.com/2022/01/quantum-computing.html
-----
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。