2013-03-20 3 views
0

나는 튜링 기계에 자신을 아주 기뻐했다. 나는 준 정밀도의 가상 튜링 기계를 만드는 과정에 있지만 단지 해결책이 있음을 알고있는 겉보기에 간단한 문제에 부딪쳤다. 온라인에서 조사했지만 내 문제를 해결 한 항목을 찾을 수 없습니다.함수 앞에 전역 변수를 정의한 다음 파이썬의 함수 내에서 전역 변수를 참조하는 방법은 무엇입니까?

함수 내에서 'l'변수를 호출 가능하게 만드는 방법은 무엇입니까? 내가 함수가 루프 함수 내에서 변수의 초기 값을 정의하는 경우는 0 여기

에 값을 재설정하기 때문에 그것은 호출해야하는 내 코드입니다 :

blanktape = [] 
for x in range(1,251): 
    x = ' ' 
    blanktape.append(x) 

global l 
l = 1 
non = ' ' 
head = blanktape[l] 
symbols = [3, 'ee', 'x'] 

def mconfigb(): 
    if head == non: 
     blanktape[blanktape.index(head)] = 0 
     l = l + 2 

def mconfigc(): 
    if head == non: 
     blanktape[blanktape.index(head)] = 1 
     l = l + 2 

def turingmachine(): 
     while l < len(blanktape) + 1: 
      mconfigb() 
      mconfigc() 
     return blanktape 

print turingmachine() 
+1

아래 답변에서 작성한 의견을 앵무장에 올리 겠지만 동의합니다. 첫째, 수업을 사용하기에 완벽한 기회입니다. 둘째, 한 글자의 변수는 작업에 매우 문제가되는 경향이 있습니다. head_location 등과 같은 긴 이름을 사용하는 것을 두려워하지 마십시오. –

답변

0
def function(input): 
    global globvar 
    .... 

그들이 함수마다 선언해야합니다. 하지만, 당신은 turingmachine 클래스로 모든 생성물을 감싸고 인스턴스 변수를 사용해야한다고 생각합니다.

0

당신은 넣어해야합니다

global l 

내에서 함수 자체를 (그리고, l 좋은 이름이 아닙니다 당신은 당신의 변수 명명 규칙을 재고 할 수 있습니다). 예를 들어

:

xyzzy = 1 

def fn(): 
    global xyzzy 
    xyzzy = xyzzy + 1 
0
def mconfigb(): 
    global l 

다른 기능은이 작업을 수행.

관련 문제