压痕问题! (Python 2.7)

时间:2013-04-28 07:50:14

标签: python indentation

这有什么问题? (而且我只是一个初学者,所以没什么好复杂的,拜托!)

#!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

在第二条f.write(red)行之后,它显示一个带红色的粉红色高光,并说:

'unindent与任何外部缩进级别

不匹配

这是什么意思,以及如何帮助/解决它?

非常感谢!

2 个答案:

答案 0 :(得分:2)

那个elif语句与if语句的范围不同,所以它会给你一个错误。只有在同一范围/缩进中已有if语句时,才能存在Elif语句。

如果您希望它是符合

的elif语句
if blackvalue is "red" or "Red":

然后再将其缩进一个标签。如果你想在与

相同的范围内
if whitevalue is "red" or "Red":

elif whitevalue is "blue" or "Blue":

然后取消选择一次。但总而言之,你不能单独拥有一个elif语句(就像你自己不能有一个else语句一样)。

答案 1 :(得分:1)

您的elif没有缩进属于if语句的方式。

像这样改变:

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