Мой вопрос касается некоторого кода, который является частью назначения Udacity. Следующий код не возвращает никакого значения. Я предполагаю, что я не называю «скалярную» функцию должным образом из моей «нормализованной» функции. Строка norm = self.scalar(scale)
возвращает тип нет. Может кто-нибудь дать мне указатель?Python 3.5.1 - переменная возвращает none
Код:
import math
from decimal import Decimal, getcontext
getcontext().prec = 10
class Vector(object):
def __init__(self, coordinates):
try:
if not coordinates:
raise ValueError
self.coordinates = tuple([Decimal(x) for x in coordinates])
self.dimension = len(self.coordinates)
except ValueError:
raise ValueError('The coordinates must be nonempty')
except TypeError:
raise TypeError('The coordinates must be an iterable')
def __eq__(self, v):
return self.coordinates == v.coordinates
def scalar(self, c):
new_coordinates = [Decimal(c)*x for x in self.coordinates]
#new_coordinates = []
#n = len(self.coordinates)
#for i in range(n):
# new_coordinates.append(self.coordinates[i] * c)
#print(Vector(new_coordinates))
def magnitude(self):
new_sq = [x**2 for x in self.coordinates]
new_mag = math.sqrt(sum(new_sq))
return (new_mag)
def normalized(self):
magnitude = self.magnitude()
scale = 1/magnitude
print(scale)
norm = self.scalar(scale)
#print(type(norm))
print(norm)
return (norm)
my_vector = Vector([1,2])
Vector.normalized(my_vector)
Ну, есть оператор возврата в методе скалярного? –
Это законный способ импорта? Возможно, это не является источником вашей проблемы, но не должно быть: '' import math'' на одной строке и '' от десятичного импорта Decimal, getcontext'' в своей собственной строке? – Igor
@Igor Я думаю, что это была проблема с копией, она, вероятно, должна была быть «import math; from decimal import ..' where ';' является новой линией –