编译器显示:
File "temp.py", line 56
return result
SyntaxError: 'return' outside function
我哪里错了?
class Complex (object):
def __init__(self, realPart, imagPart):
self.realPart = realPart
self.imagPart = imagPart
def __str__(self):
if type(self.realPart) == int and type(self.imagPart) == int:
if self.imagPart >=0:
return '%d+%di'%(self.realPart, self.imagPart)
elif self.imagPart <0:
return '%d%di'%(self.realPart, self.imagPart)
else:
if self.imagPart >=0:
return '%f+%fi'%(self.realPart, self.imagPart)
elif self.imagPart <0:
return '%f%fi'%(self.realPart, self.imagPart)
def __div__(self, other):
r1 = self.realPart
i1 = self.imagPart
r2 = other.realPart
i2 = other.imagPart
resultR = float(float(r1*r2+i1*i2)/float(r2*r2+i2*i2))
resultI = float(float(r2*i1-r1*i2)/float(r2*r2+i2*i2))
result = Complex(resultR, resultI)
return result
c1 = Complex(2,3)
c2 = Complex(1,4)
print c1/c2
这个怎么样?
class Complex (object):
def __init__(self, realPart, imagPart):
self.realPart = realPart
self.imagPart = imagPart
def __str__(self):
if type(self.realPart) == int and type(self.imagPart) == int:
if self.imagPart >=0:
return '%d+%di'%(self.realPart, self.imagPart)
elif self.imagPart <0:
return '%d%di'%(self.realPart, self.imagPart)
else:
if self.imagPart >=0:
return '%f+%fi'%(self.realPart, self.imagPart)
elif self.imagPart <0:
return '%f%fi'%(self.realPart, self.imagPart)
def __div__(self, other):
r1 = self.realPart
i1 = self.imagPart
r2 = other.realPart
i2 = other.imagPart
resultR = float(float(r1*r2+i1*i2)/float(r2*r2+i2*i2))
resultI = float(float(r2*i1-r1*i2)/float(r2*r2+i2*i2))
result = Complex(resultR, resultI)
return result
c1 = Complex(2,3)
c2 = Complex(1,4)
print c1/c2
答案 0 :(得分:12)
我会检查我的缩进,它看起来。你可能混合标签和空格? PEP8 (Python Style Guide)建议使用4 spaces only。与其他语言不同,whitepace在Python中有很大的不同,因此一致性非常重要。
以上也提出了以下建议:
使用-t选项调用Python命令行解释器时, 它会发出有关非法混合制表符和空格的代码的警告。 使用-tt时,这些警告会出错。这些选择很高 推荐!
特别是,你的第二个else
似乎已经关闭(可能应该缩进),而且这个方法def __div__(self, other):
也是(我认为它应该与你的其他{{相同) 1}} s - 即,“移出”而不是缩进)。
混合标签/空白的问题很容易,因为两个字符都是“不可见的”。
答案 1 :(得分:4)
确保您的__div__
宣布与__str__
处于同一级别(现在,它已在__str_
内声明)。
答案 2 :(得分:3)
通过我的复制和粘贴,这一行的所有内容:
else:
if self.imagPart >=0:
return '%f+%fi'%(self.realPart, self.imagPart)
elif self.imagPart <0: # Everything under here..
到这一行:
resultI = float(float(r2*i1-r1*i2)/float(r2*r2+i2*i2))
result = Complex(resultR, resultI)
return result # Needs to be unindented.
有错误的缩进。
答案 3 :(得分:2)
我是python世界的新手。我学到的是return语句应该是这样的。
示例一: -
def split_train_test(data, test_ratio):
shuffled_indices = np.random.permutation(len(data))
test_set_size = int(len(data) * test_ratio)
test_indices = shuffled_indices[:test_set_size]
train_indices = shuffled_indices[test_set_size:]
return data.iloc[train_indices],data.iloc[test_indices]
示例二: -
def load_housing_data(housing_path=HOUSING_PATH):
csv_path = os.path.join(housing_path, "housing.csv")
return pd.read_csv(csv_path)
答案 4 :(得分:0)
使用优秀的编辑器
安装以下其中一种可以正确格式化文件的编辑器
格式化文档
例如:在Visual Studio代码中,打开文件>右键单击>设置文档格式
发现并解决问题
代码由编辑器格式化后,您将看到类似
的内容错误代码
def func1():
print ("I am in func1")
return "" # <----------- this is ok, its inside function func1
def func2():
print ("I am in func2")
return "" # <-----CASE 1------ SyntaxError: 'return' outside function 'func2'
print ("I am outside of all functions")
return "" # <-----CASE 2------ SyntaxError: 'return' outside of all functions
注意-在情况1和情况2中,都发生了错误,因为'return'不在任何函数内部,而是在所有函数之外。
好代码
def func1():
print ("I am in func1")
return "" # <----------- this is ok, its inside function func1
def func2():
print ("I am in func2")
return "" # <-----CASE 1-- Fixed, added SPACE or TAB, now 'return' is inside function
print ("I am outside of all functions")
# <-----CASE 2-- Fixed, 'return' is removed, no return is required here
这是当您在间隔之后用python编写代码时可能会遇到的非常普遍的问题。
希望有帮助。
答案 5 :(得分:-1)
def functiont(x,y z,k):
"""some function
"""
if xxxx:
return True
else
return False
根据上面的代码,您可以看到return
语句在函数def中缩进,因此在这种情况下不会出错。但是,如果返回缩进如下,则会收到python错误- SyntaxError:'return'函数外部。
def functiont(x,y z,k):
"""some function
"""
if xxxx:
return True
else
return False