인프런 커뮤니티 질문&답변

은영님의 프로필 이미지
은영

작성한 질문수

양자 컴퓨터 프로그래밍 입문

07. 그로버 알고리즘: 건초더미에서 바늘찾기

왜 circuit += 문법에서 왜 오류뜨는지 모르겠습니다.

작성

·

113

0

강의에서는 계속 circuit += 문법을 계속 사용하셔서

저도 강의보면서 실제로 주피터노트북에 똑같이 작성하지만

계속 오류가 뜹니다. 오류코드는 다음과 같습니다 왜이럴까요? 답변 해주시면 감사하겠습니다.

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[66], line 4
      2 x=2
      3 circuit = QuantumCircuit(3, 2)
----> 4 circuit += init(n)
      5 circuit.barrier()
      6 circuit += oracle(n,x)

TypeError: unsupported operand type(s) for +=: 'QuantumCircuit' and 'QuantumCircuit'

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
은영님, 문의하신 “circuit += init(n) 문법에서 발생하는 오류에 대해 답변드리겠습니다.

주피터 노트북에서 circuit += init(n) 구문을 사용할 때 발생하는 TypeError 오류는 QuantumCircuit 객체에 대해 += 연산을 지원하지 않기 때문입니다. 파이썬에서 += 연산자는 일반적으로 ‘in-place addition’을 의미하지만, 모든 객체가 이 연산을 지원하는 것은 아닙니다. 특히, Qiskit의 QuantumCircuit 객체의 경우, 여러 개의 회로를 연결하기 위해서는 += 대신 circuit.compose() 메소드를 사용해야 합니다.

예를 들어, 기존의 circuit에 다른 회로 init_circuit을 추가하려면 다음과 같이 작성할 수 있습니다:

circuit = circuit.compose(init_circuit)

따라서, 코드를 다음과 같이 수정해보세요:

circuit = circuit.compose(init(n))

compose() 메소드는 하나의 회로에 다른 회로를 추가하여 새로운 회로를 만듭니다. 이 방법을 사용하면 원하시는 대로 회로를 조합할 수 있을 것입니다.

오류 해결에 도움이 되었기를 바랍니다. 추가 질문이 있으시면 언제든지 문의해주세요!

은영님의 프로필 이미지
은영

작성한 질문수

질문하기