1414
1515import math
1616
17- import qiskit
18- from qiskit import Aer , ClassicalRegister , QuantumCircuit , QuantumRegister , execute
17+ try :
18+ import qiskit
19+ from qiskit import Aer , ClassicalRegister , QuantumCircuit , QuantumRegister , execute
20+ QISKIT_AVAILABLE = True
21+ except ModuleNotFoundError :
22+ QISKIT_AVAILABLE = False
1923
2024
21- def grover_search (number_of_qubits : int = 2 ) -> qiskit . result . counts . Counts :
25+ def grover_search (number_of_qubits : int = 2 ):
2226 """
2327 Build and simulate Grover's search algorithm.
2428
@@ -33,13 +37,19 @@ def grover_search(number_of_qubits: int = 2) -> qiskit.result.counts.Counts:
3337 Raises:
3438 TypeError: if input is not integer
3539 ValueError: if invalid number of qubits
40+ ModuleNotFoundError: if qiskit is not installed
3641
37- >>> counts = grover_search(2)
38- >>> isinstance(counts, dict)
42+ >>> if QISKIT_AVAILABLE: # doctest: +SKIP
43+ ... counts = grover_search(2)
44+ ... isinstance(counts, dict)
3945 True
40- >>> sum(counts.values())
41- 10000
4246 """
47+ if not QISKIT_AVAILABLE :
48+ raise ModuleNotFoundError (
49+ "qiskit is required for this algorithm. "
50+ "Install it with: pip install qiskit qiskit-aer"
51+ )
52+
4353 if isinstance (number_of_qubits , str ):
4454 raise TypeError ("number of qubits must be an integer." )
4555 if number_of_qubits <= 0 :
@@ -84,4 +94,7 @@ def grover_search(number_of_qubits: int = 2) -> qiskit.result.counts.Counts:
8494
8595
8696if __name__ == "__main__" :
87- print (f"Total count for Grover search state is: { grover_search (3 )} " )
97+ if QISKIT_AVAILABLE :
98+ print (f"Total count for Grover search state is: { grover_search (3 )} " )
99+ else :
100+ print ("qiskit not installed. Install with: pip install qiskit qiskit-aer" )
0 commit comments