2017-12-01 25 views
0

저는 파이썬을 처음 접했고 온라인으로 물리학 프로젝트를 찾았습니다. 이 코드에는 내 문제를 일으키는 clifford 라이브러리가 포함되어 있습니다.Clifford 라이브러리 : 블레이드 오류로 인해 키 오류가 발생했습니다.

Traceback (most recent call last): 
    File "/Users/melissa/Documents/Fodje.py", line 5, in <module> 
    e0, e1, e2 = [blades['e%i'%k] for k in range(3)] 
    File "/Users/melissa/Documents/Fodje.py", line 5, in <listcomp> 
    e0, e1, e2 = [blades['e%i'%k] for k in range(3)] 
KeyError: 'e0' 
: 나는 다음 역 추적을 얻을

from __future__ import division 
import numpy 
from clifford import * 
layout, blades = Cl(3,0) 
e0, e1, e2 = [blades['e%i'%k] for k in range(3)] 
I = (e0^e1^e2) 

: 코드와 내가 pip3를 사용하여 설치 한 사실의 구문을 감안할 때,이 코드를 실행 한 후 3.

파이썬해야한다

CS 교수에게 물었더니 blades에 색인 생성에 문제가있을 것이라고합니다.

누구든지이 문제를 해결하는 데 도움을 줄 수 있습니까? 감사!

전체 코드는 here 입니다. Clifford 문서는 here입니다.

답변

1

여기서 문제는 dict 객체 blades에 키 e1, ​​e2, e3 등이 포함되어 있다는 점입니다. range() 함수는 0에서 시작하므로 range(3)은 기본적으로 목록 [0,1,2] (실제로는 ittarator가 아니지만 걱정할 필요가 없습니다)을 반환합니다.

키 오류가 발생하는 이유는 python이 블레이드에서 e0 키를 찾고있어 존재하지 않기 때문입니다. k를 k + 1로 바꾸면 제대로 작동합니다.

e.g.e1, e2, e3 = [blades['e%i'%(k+1)] for k in range(3)] 

일반적으로 문제를 해결하려는 경우 키 오류는 사용자가없는 것을 찾아 보려고한다는 것을 의미합니다. 그러므로 그 객체를 인쇄하는 것이 좋습니다. 그래서 여기에 무엇이 잘못되었는지 진단하기 위해서 나는 단지 print(blades)을했고 그것은 분명 해졌다. 이게 도움이 되길 바란다.

전체 코드는 다음과 같습니다

from __future__ import division 
import numpy 
from clifford import * 
layout, blades = Cl(3,0) 
e1, e2, e3 = [blades['e%i'%(k+1)] for k in range(3)] 
I = (e1^e2^e3)