Qiskit NameError:名称“ q0”未定义

时间:2018-10-08 11:27:32

标签: python-3.x qiskit

我编写了以下代码,以使用3-qubits实现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笔记本只关心“ q0”,而不关心列表中的其他元素?我该如何解决?

NameError: name 'q0' is not defined

1 个答案:

答案 0 :(得分:1)

它给您有关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)