From 5b7a60af3a357e7f8005bc91a6be58c45c1b23f6 Mon Sep 17 00:00:00 2001 From: martin-martin Date: Fri, 24 Oct 2025 12:19:10 +0200 Subject: [PATCH 1/2] Add tutorial code for quantum computing basics tutorial --- quantum-computing-basics/README.md | 12 ++++++++++++ quantum-computing-basics/pyproject.toml | 9 +++++++++ quantum-computing-basics/quantum_circuit.png | Bin 0 -> 9102 bytes quantum-computing-basics/quantum_circuit.py | 10 ++++++++++ 4 files changed, 31 insertions(+) create mode 100644 quantum-computing-basics/README.md create mode 100644 quantum-computing-basics/pyproject.toml create mode 100644 quantum-computing-basics/quantum_circuit.png create mode 100644 quantum-computing-basics/quantum_circuit.py diff --git a/quantum-computing-basics/README.md b/quantum-computing-basics/README.md new file mode 100644 index 0000000000..2bb55396bb --- /dev/null +++ b/quantum-computing-basics/README.md @@ -0,0 +1,12 @@ +# Quantum Computing Basics + +Code examples from the Real Python tutorial on [Quantum Computing Basics](https://realpython.com/quantum-computing-basics/). + +## Requirements + +- Python 3.11+ +- Dependencies from `pyproject.toml` + +## Running the Examples + +The main example creates a simple quantum circuit with a Hadamard gate and measurement. diff --git a/quantum-computing-basics/pyproject.toml b/quantum-computing-basics/pyproject.toml new file mode 100644 index 0000000000..0b1465f967 --- /dev/null +++ b/quantum-computing-basics/pyproject.toml @@ -0,0 +1,9 @@ +[project] +name = "quantum-computing-basics" +version = "0.1.0" +requires-python = ">=3.11" +dependencies = [ + "qiskit==2.1.1", + "matplotlib", + "pylatexenc", +] diff --git a/quantum-computing-basics/quantum_circuit.png b/quantum-computing-basics/quantum_circuit.png new file mode 100644 index 0000000000000000000000000000000000000000..c90650acba98441bbb499dee45ec2d6f59d83070 GIT binary patch literal 9102 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 literal 0 HcmV?d00001 diff --git a/quantum-computing-basics/quantum_circuit.py b/quantum-computing-basics/quantum_circuit.py new file mode 100644 index 0000000000..d3443edb71 --- /dev/null +++ b/quantum-computing-basics/quantum_circuit.py @@ -0,0 +1,10 @@ +from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister + +qr = QuantumRegister(1, name="quantum") +cr = ClassicalRegister(1, name="classical") +qc = QuantumCircuit(qr, cr) + +qc.h(0) +qc.measure(0, 0) + +qc.draw("mpl", filename="quantum_circuit.png") \ No newline at end of file From 90c8833195e5a91d81c1fe665ac7f4b64d2daa50 Mon Sep 17 00:00:00 2001 From: martin-martin Date: Fri, 24 Oct 2025 12:19:48 +0200 Subject: [PATCH 2/2] Blacken --- quantum-computing-basics/quantum_circuit.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quantum-computing-basics/quantum_circuit.py b/quantum-computing-basics/quantum_circuit.py index d3443edb71..8aa786c7ec 100644 --- a/quantum-computing-basics/quantum_circuit.py +++ b/quantum-computing-basics/quantum_circuit.py @@ -1,4 +1,4 @@ -from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister +from qiskit import ClassicalRegister, QuantumCircuit, QuantumRegister qr = QuantumRegister(1, name="quantum") cr = ClassicalRegister(1, name="classical") @@ -7,4 +7,4 @@ qc.h(0) qc.measure(0, 0) -qc.draw("mpl", filename="quantum_circuit.png") \ No newline at end of file +qc.draw("mpl", filename="quantum_circuit.png")