错误“输入不匹配”,期待DEDENT
根据这个教程,我遇到了一个错误,y = 1;我在用Netbeans 6.5来写Python代码。谢谢。
y=1
^
错误信息:语法错误:第8行第3列有不匹配的输入'',期待的是缩进结束(temperatureconverter.py,第8行)
下面是我的Python代码,请帮我格式化一下,谢谢。
__author__="n"
__date__ ="$Jan 9, 2011 3:03:39 AM$"
def temp():
print "Welcome to the NetBeans Temperature Converter."
y=1
n=0
z=input("Press 1 to convert Fahrenheit to Celsius, 2 to convert Celsius to Fahrenheit, or 3 to quit:")
if z!=1 and z!=2 and z!=3:
e=input("Invalid input, try again?(y or n)")
if e==1:
t=''
temp()
if e==0:
t="Thank you for using the NetBeans Temperature Converter."
print "Celsius Fahrenheit" # This is the table header.
for celsius in range(0,101,10): # Range of temperatures from 0-101 in increments of 10
fahrenheit = (9.0/5.0) * celsius +32 # The conversion
print celsius, " ", fahrenheit # a table row
temp()
5 个回答
1
为了让大家更感兴趣,这里有一个更详细的例子。我加入了一些神奇的东西,希望能帮助你更深入地理解Python!
另外,我一直乐于学习,不知道还有没有其他人有建议,能让这个例子在Python的使用上更规范、更好?
class MenuItem(object):
def __init__(self, fn, descr=None, shortcuts=None):
"""
@param fn: callable, callback for the menu item. Menu quits if fn returns False
@param descr: str, one-line description of the function
@param shortcuts: list of str, alternative identifiers for the menu item
"""
if hasattr(fn, '__call__'):
self.fn = fn
else:
raise TypeError('fn must be callable')
if descr is not None:
self.descr = descr
elif hasattr(fn, '__doc__'):
self.descr = fn.__doc__
else:
self.descr = '<no description>'
if shortcuts is None:
shortcuts = []
self.shortcuts = set(str(s).lower() for s in shortcuts)
def __str__(self):
return self.descr
def hasShortcut(self,s):
"Option has a matching shortcut string?"
return str(s).lower() in self.shortcuts
def __call__(self, *args, **kwargs):
return self.fn(*args, **kwargs)
class Menu(object):
def __init__(self):
self._opts = []
def add(self, od, *args, **kwargs):
"""
Add menu item
can be called as either
.add(MenuItem)
.add(args, to, pass, to, MenuItem.__init__)
"""
if isinstance(od, MenuItem):
self._opts.append(od)
else:
self._opts.append(MenuItem(od, *args, **kwargs))
def __str__(self, fmt="{0:>4}: {1}", jn='\n'):
res = []
for n,d in enumerate(self._opts):
res.append(fmt.format(n+1, d))
return jn.join(res)
def match(self, s):
try:
num = int(s)
if 1 <= num <= len(self._opts):
return self._opts[num-1]
except ValueError:
pass
for opt in self._opts:
if opt.hasShortcut(s):
return opt
return None
def __call__(self, s=None):
if s is None:
s = getStr(self)
return self.match(s)
def fahr_cels(f):
"""
@param f: float, temperature in degrees Fahrenheit
Return temperature in degrees Celsius
"""
return (f-32.0)/1.8
def cels_fahr(c):
"""
@param c: float, temperature in degrees Celsius
Return temperature in degrees Fahrenheit
"""
return (c*1.8)+32.0
def getFloat(msg=''):
return float(raw_input(msg))
def getStr(msg=''):
print(msg)
return raw_input().strip()
def doFahrCels():
"Convert Fahrenheit to Celsius"
f = getFloat('Please enter degrees Fahrenheit: ')
print('That is {0:0.1f} degrees Celsius'.format(fahr_cels(f)))
return True
def doCelsFahr():
"Convert Celsius to Fahrenheit"
c = getFloat('Please enter degrees Celsius: ')
print('That is {0:0.1f} degrees Fahrenheit'.format(cels_fahr(c)))
return True
def doQuit():
"Quit"
return False
def makeMenu():
menu = Menu()
menu.add(doFahrCels, None, ['f'])
menu.add(doCelsFahr, None, ['c'])
menu.add(doQuit, None, ['q','e','x','quit','exit','bye','done'])
return menu
def main():
print("Welcome to the NetBeans Temperature Converter.")
menu = makeMenu()
while True:
opt = menu()
if opt is None: # invalid option selected
print('I am not as think as you confused I am!')
else:
if opt() == False:
break
print("Thank you for using the NetBeans Temperature Converter.")
if __name__=="__main__":
main()
2
在设置里找到“Preferences”然后选择“Pydev”,接着点击“Editor”,把“用空格替代制表符”这个选项取消勾选。虽然很多人认为制表符应该换成8个空格,但实际上制表符可以设置为4个空格。这样做可以消除所有的缩进错误。
15
在你使用的print
语句中,你用了2个空格来缩进这一行,而在下一行你用了3个空格。
在Python中,空格是很重要的。具体来说,如果你在一行中用了某种缩进级别,下一行就不能随便换成其他的缩进级别。