Python 3.5.1-变量返回无
我的问题是关于Udacity任务中的一些代码。以下代码未返回任何值。我假设我没有正确地从“规范化”函数调用“标量”函数。行Python 3.5.1-变量返回无,python,python-3.x,nonetype,Python,Python 3.x,Nonetype,我的问题是关于Udacity任务中的一些代码。以下代码未返回任何值。我假设我没有正确地从“规范化”函数调用“标量”函数。行norm=self.scalar(scale)返回类型none。谁能给我一个指针吗 代码: 问题是您试图从scalar获取一个值,即使它不返回任何内容。我不完全确定你想返回什么,所以你必须自己处理 一个值得注意的问题是,您的方法调用了my_vector实例的属性。从技术上讲,这不是问题,但可能应该改变。您的代码应该如下所示 my_vector = Vector([1,2])
norm=self.scalar(scale)
返回类型none。谁能给我一个指针吗
代码:
问题是您试图从
scalar
获取一个值,即使它不返回任何内容。我不完全确定你想返回什么,所以你必须自己处理
一个值得注意的问题是,您的方法调用了my_vector
实例的属性。从技术上讲,这不是问题,但可能应该改变。您的代码应该如下所示
my_vector = Vector([1,2])
my_vector.normalized()
Python有一个很酷的小技巧,如果没有指定,它总是返回None。所以,如果您编写一个函数helloworld,它不返回任何内容,那么您将一无所获 例如:
def hello_world():
print('hello world')
result = hello_world()
print(result) # prints nothing cause result==None
在scalar
方法中没有return语句,因此它总是不返回任何语句
我猜您希望返回您在scalar中创建的对象
def scalar(self, c):
new_coordinates = [Decimal(c)*x for x in self.coordinates]
return new_coordinates
还是为了简洁
def scalar(self, c):
return [Decimal(c)*x for x in self.coordinates]
那么,标量方法中有返回语句吗?这是合法的导入方式吗?这可能不是问题的根源,但不应该是:
import math
在一行上,而from decimal import decimal,getcontext
在它自己的行上?@Igor我认为这是一个复制粘贴问题,可能应该是import math;从十进制输入..
其中代码>是一个newline@NickHumrich这是因为Blckknght试图修复一个导致代码顶部和底部不能被格式化的格式化问题。由于作者没有用两个空格来结束他们的代码行,这意味着在代码行之间插入了一个空格而不是换行。@GarethPW我修复了格式问题,而不是根问题,但我承认这是一个问题。从技术上讲,这是一个问题吗?从以类的实例作为第一个参数的类调用类方法将应用实例为self
的函数。虽然作者可能不想以这种方式使用函数,但它并不是真的“错”。@o_o我想你是对的。作为一个评论,这可能会更好。@GarethPW:谢谢你指出这一点。我感谢您的反馈!换句话说,将scalar
方法中的new\u坐标=…
更改为return…
将解决此问题。@o\u o将此添加到回答中感谢大家-缺少返回行是根本原因。我感谢对一个初学者的帮助和耐心。
def scalar(self, c):
return [Decimal(c)*x for x in self.coordinates]