2013-04-28 5 views
0

무엇이 문제입니까? (그리고 나는 단지 초보자, 너무 복잡 아무것도주십시오 해요!) 두 번째 f.write(red) 라인 후들여 쓰기 문제! (Python 2.7)

#!usr/bin/python 

import os 
import sys 
import pdb 
import time 
import array 

red = chr(00), chr(00), chr(255) 
blue = chr(255), chr(00), chr(00) 

print "Monochrome Bitmap Color Changer" 
print "Supported colors: " 
print "Black, White, Blue, Red, Yellow," 
print "Green, Orange, Purple, Pink, Brown, Grey" 
print "" 

filename = raw_input("Please enter filename or directory of monochrome bitmap: ") 
whitevalue = raw_input("Change all white pixels to? ") 
blackvalue = raw_input("Change all black pixels to? ") 
with open (filename, 'r+b') as f: 
    f.seek(54) 
    if whitevalue is "red" or "Red": 
     f.write(red) 
    elif whitevalue is "blue" or "Blue": 
      f.write(blue) 
      f.seek(58) 
      if blackvalue is "red" or "Red": 
     f.write(red) 
     elif blackvalue is "blue" or "Blue": 
      f.write(blue) 
      exit 
    #print "Done" 
    #time.sleep(3) 
    #exit 

, 그것은 붉은 분홍빛이 도는 하이라이트를 보여주고 말한다 :

'내어 쓰기가 일치하지 않습니다 바깥 쪽 들여 쓰기 레벨 '

이것은 무엇을 의미하며 어떻게 도와 줄 수 있습니까?

대단히 감사합니다!

답변

2

해당 elif 문은 if 문과 동일한 범위에 있지 않으므로 오류가 발생합니다. Elif 문은 동일한 범위/들여 쓰기에 이미 if 문이있는 경우에만 존재할 수 있습니다. 당신이

if blackvalue is "red" or "Red": 

으로 줄에 ELIF 문 싶은 경우

는 이상이 한 번 더 탭을 들여. 당신은

if whitevalue is "red" or "Red": 

elif whitevalue is "blue" or "Blue": 

한 번에 다음 해제 탭과 같은 범위를 확인하려면. 그러나 요약하면 elif 문을 단독으로 사용할 수는 없습니다 (마치 다른 문을 사용할 수없는 것처럼).

1

elifif 문에 속하는 방식으로 들여 쓰여지지 않습니다. 이 같은

변경을 :

with open (filename, 'r+b') as f: 
    f.seek(54) 
    if whitevalue is "red" or "Red": 
     f.write(red) 
    elif whitevalue is "blue" or "Blue": 
     f.write(blue) 
     f.seek(58) 
     if blackvalue is "red" or "Red": 
      f.write(red) 
     elif blackvalue is "blue" or "Blue": 
      f.write(blue) 
     exit