Qiskit NameError: имя 'q0' не определено - PullRequest
0 голосов
/ 08 октября 2018

Я написал следующий код для реализации алгоритма Гровера с использованием 3-кубитов.

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 голосов
/ 24 ноября 2018

Выдает ошибку о 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)
...