Qiskit NameError: name 'q0' is not defined
Qiskit NameError: name 'q0' is not defined
我编写了以下代码来使用 3 量子位实现 Grover 算法。
from qiskit import*
from qiskit.tools.visualization import*
list = [q0,q1,q2]
def ccz(qci,q0,q1,q2):
qci.h(q2)
qci.ccx(q0,q1,q2)
qci.h(q2)
def grover(qci,q0,q1,q2):
ccz(qci,q0,q1,q2)
for i in range(list):
qci.h(i)
qci.x(i)
ccz(qci,q0,q1,q2)
for i in range(list):
qci.x(i)
qci.h(i)
bn = 3
q = QuantumRegister(bn)
c = ClassicalRegister(bn)
qc = QuantumCircuit(q,c)
for i in range(bn):
qc.h(q[i])
grover(qc,q[0],q[1],q[2])
for i in range(bn):
qc.measure(q[bn-i-1],c[i])
r = execute(qc,"local_qasm_simulator").result()
rc = r.get_counts()
print(rc)
plot_histogram(rc)
但是我得到了下面的错误。为什么我的 Jupyter notebook 只关心 "q0",而不关心列表中的其他元素?我该如何解决这个问题?
NameError: name 'q0' is not defined
它给你关于 q0
的错误,因为这是它遇到的第一个未知变量。然后就死了。
您的程序流程不当。您尝试定义变量 list
:
- 您尝试从尚未定义的变量构建它,
- 你把它设为全局并尝试在函数中以某种方式操作,你传递的地方也传递变量作为参数,
- 此名称
list
不是一个好的选择,因为它是 python 内置名称。
试试这个:
from qiskit import *
from qiskit.tools.visualization import *
def ccz(qci, q0, q1, q2):
qci.h(q2)
qci.ccx(q0, q1, q2)
qci.h(q2)
def grover(qci, q0, q1, q2):
ccz(qci, q0, q1, q2)
for i in [q0, q1, q2]:
qci.h(i)
qci.x(i)
ccz(qci, q0, q1, q2)
for i in [q0, q1, q2]:
qci.x(i)
qci.h(i)
bn = 3
q = QuantumRegister(bn)
c = ClassicalRegister(bn)
qc = QuantumCircuit(q, c)
for i in range(bn):
qc.h(q[i])
grover(qc, q[0], q[1], q[2])
for i in range(bn):
qc.measure(q[bn - i - 1], c[i])
r = execute(qc, "local_qasm_simulator").result()
rc = r.get_counts()
print(rc)
plot_histogram(rc)
我编写了以下代码来使用 3 量子位实现 Grover 算法。
from qiskit import*
from qiskit.tools.visualization import*
list = [q0,q1,q2]
def ccz(qci,q0,q1,q2):
qci.h(q2)
qci.ccx(q0,q1,q2)
qci.h(q2)
def grover(qci,q0,q1,q2):
ccz(qci,q0,q1,q2)
for i in range(list):
qci.h(i)
qci.x(i)
ccz(qci,q0,q1,q2)
for i in range(list):
qci.x(i)
qci.h(i)
bn = 3
q = QuantumRegister(bn)
c = ClassicalRegister(bn)
qc = QuantumCircuit(q,c)
for i in range(bn):
qc.h(q[i])
grover(qc,q[0],q[1],q[2])
for i in range(bn):
qc.measure(q[bn-i-1],c[i])
r = execute(qc,"local_qasm_simulator").result()
rc = r.get_counts()
print(rc)
plot_histogram(rc)
但是我得到了下面的错误。为什么我的 Jupyter notebook 只关心 "q0",而不关心列表中的其他元素?我该如何解决这个问题?
NameError: name 'q0' is not defined
它给你关于 q0
的错误,因为这是它遇到的第一个未知变量。然后就死了。
您的程序流程不当。您尝试定义变量 list
:
- 您尝试从尚未定义的变量构建它,
- 你把它设为全局并尝试在函数中以某种方式操作,你传递的地方也传递变量作为参数,
- 此名称
list
不是一个好的选择,因为它是 python 内置名称。
试试这个:
from qiskit import *
from qiskit.tools.visualization import *
def ccz(qci, q0, q1, q2):
qci.h(q2)
qci.ccx(q0, q1, q2)
qci.h(q2)
def grover(qci, q0, q1, q2):
ccz(qci, q0, q1, q2)
for i in [q0, q1, q2]:
qci.h(i)
qci.x(i)
ccz(qci, q0, q1, q2)
for i in [q0, q1, q2]:
qci.x(i)
qci.h(i)
bn = 3
q = QuantumRegister(bn)
c = ClassicalRegister(bn)
qc = QuantumCircuit(q, c)
for i in range(bn):
qc.h(q[i])
grover(qc, q[0], q[1], q[2])
for i in range(bn):
qc.measure(q[bn - i - 1], c[i])
r = execute(qc, "local_qasm_simulator").result()
rc = r.get_counts()
print(rc)
plot_histogram(rc)