2016-11-03 2 views
0

간단한 인쇄 변수 줄을 프로그램에 추가하면 IndentationError가 발생합니다. 코드는 그림과 같이 주석 "예를 인쇄"라인과 함께 작동하지만 내가 주석을 해제 할 때 나는 오류 얻을 :들여 쓰기 오류 : 예기치 않은 들여 쓰기 : 문제가있는 명령을 인쇄하십시오.

가 오류 :

factors.append(yes) 
^ 
IndentationError: unexpected indent 

이 코드 :

n = 1 
x = int(raw_input("What is the number you would like largest prime factor of?")) 
factors= [] 
checklist = [] 
primefactors = [] 
while n < (x+1)/2: 
    if x % n == 0: 
     yes = n 
     #print yes 
     factors.append(yes) 
    if n % 1000 == 0: 
     print "running n count = %s" % (n) 
n += 1 

for j in factors: 
    checklist = [j] 
    for i in range(2, j): 
     if j % i == 0: 
      checklist.append(j/i) 
    if len(checklist) == 1: 
     primefactors.append(checklist) 

print "All factors of %s are %s" % (x,factors) 
print "The prime factors are %s" % (primefactors) 
print "The highest prime factor is %s" % (max(primefactors)) 
+0

당신은 혼합되는 탭과 공간 님의

if x % n == 0: yes = n #print yes factors.append(yes) 

변경이 다음 if 블록을 변경합니다. 그러지 마. * 하나의 스타일 *, 바람직하게는 공백 *에만 붙이십시오. 파이썬은 탭을 다음 8 번째 열로 확장하지만 대신 탭을 구성하여 4 번째 열로 확장하는 것처럼 보입니다. –

+0

그게 다야, 지금 일하고있어, 고마워. – FinnPegler

답변

0

탭과 공백이 고려를 파이썬에서는 다릅니다. 4 개의 공백이나 탭으로 들여 쓰기를 확인하고, 단일 프로그램에서 이들을 서로 바꾸어 사용하지 마십시오.
편집 : 알았습니다. 그것은 여기에 있어요 :

if x % n == 0: 
yes = n 
#print yes 
factors.append(yes) 

변경이에 :

if x % n == 0: 
    yes = n 
    print yes 
    factors.append(yes) 
0

귀하의 if 블록 들여 쓰기하지 않습니다.

if x % n == 0: 
    yes = n 
    print yes 
    factors.append(yes) 
+0

죄송합니다. 붙여 넣기에 실수였습니다. 내 프로그램에서 들여 썼습니다. 나는 코드를 편집 할 것이다. 나는 또한 내가 그 이유를 발견했다고 생각한다. 나는 4 칸 대신 탭을 사용했다. 모든 탭을 네 칸으로 바꿨고 작동 중입니다. 그 이유가있을 수 있었습니까? – FinnPegler

+0

예. 사실 그것들을 서로 바꾸어 사용하지 마십시오. 공백 들여 쓰기 나 탭 들여 쓰기로 고정하십시오. 그렇지 않으면 파이썬에서 오류가 발생합니다. – Arindam

관련 문제