2017-09-12 3 views
-1

나는 특히 마지막 블록을 제외 관한 호기심 질문,이 : 첫 번째에서 minimaly 다른 인이 작동하도록되어 마지막으로 초 사이에, 작동마지막으로 제외 운영자

코드의 첫 번째 블록 동안 그것을 항상 오류가 발생합니다.

먼저 :

def askint(): 
while True: 
    try: 
     val = int(raw_input("Please enter an integer: ")) 
    except: 
     print "Looks like you did not enter an integer!" 
     continue 
    else: 
     print 'Yep thats an integer!' 
     break 
    finally: 
     print "Finally, I executed!" 
    print val 

둘째 :

def Abra(): 
while True: 
    try: 
     v = int(raw_input('Geben Sie bitte einen Integer ein (1-9) : ')) 
    except : 
     print 'Einen Integer bitte (1-9)' 
     continue 

    if v not in range(1,10): 
     print ' Einen Integer von 1-9' 
     continue 
    else: 
     print 'Gut gemacht' 
     break 
    finally: 
     print "Finally, I executed!" 

아브라() 모든 솔루션을위한

열기 - 감사

+0

동일한 들여 쓰기 수준에서 'if'는 'try'제어 구조를 끝냅니다. '마침내'는 그와 관련이 없습니다. –

+0

두 번째 코드 블록에서'finally'는'except' 블록 다음에 없습니다. 그것은 구문 오류입니다 ... – GPhilo

답변

0

최종적으로 절 직접 연결해야합니다 try/except 절이 작동하도록하려면 . 두 번째 코드 블록에는 try/except와 finally 사이에 if/else가 있습니다. 따라서 구조는 try/except, if/else, finally 중 하나이며 유효하지 않습니다. 대조적으로 첫 번째로, else는 try가 예외가 발생하지 않고 try/except의 일부인 블록입니다. try/except/else/finally 구조입니다.

1

내가 가진 혼란은 첫 번째 예제의 else에서 발생한다고 생각합니다.

"시도/제외"블록에서 try, except, elsefinally 영역이 모두 유효합니다. elseif 문과 동일하지 않으므로 새로운 프로그래머에게 오해의 소지가 있습니다.

당신은 여기에 대해 읽을 수 있습니다 : 두 번째 예에서 Python try-else

을의 if 문은 외부 전체 try/except/else/finally 블록 중 하나, 또는 제대로 섹션 중 하나에 들여 쓰기를해야한다으로 장소를 벗어났습니다. 난 당신이 단지 자신에게 혼란을 피하기 위해 else을 제거 할 제안 수도 있지만

def Abra(): 
    while True: 
    try: 
     v = int(raw_input('Geben Sie bitte einen Integer ein (1-9) : ')) 
     if v not in range(1,10): 
      print ' Einen Integer von 1-9' 
      continue 
    except : 
     print 'Einen Integer bitte (1-9)' 
     continue 
    else: 
     print 'Gut gemacht' 
     break 
    finally: 
     print "Finally, I executed!" 

(그러나 이것은 인수 나은에서 설명 : 특정 예를 들어

, 당신은이 비슷한을 할 것입니다 위의 링크) :

def Abra(): 
    while True: 
    try: 
     v = int(raw_input('Geben Sie bitte einen Integer ein (1-9) : ')) 
     if v not in range(1,10): 
      print ' Einen Integer von 1-9' 
      continue 
     print 'Gut gemacht' 
     break 
    except : 
     print 'Einen Integer bitte (1-9)' 
     continue 
    finally: 
     print "Finally, I executed!" 
+0

나는 실행할 수있는 if 문을 마침내 통합 할 수 있습니까? – Roman

+0

구조화 방법에 대한 예제를 추가했습니다. 그 밖의 것이 없다면, 이것은 잘못 가고있는 부분을 더 잘 이해할 수있는 작업 코드입니다. – Bilkokuya