코드를 실행할 때 잘못된 결과가 계속 발생합니다. 차이점을 얻으려고 노력하고 있는데, 두 개체 색상이 같지 않으면 개체의 새 색상으로 설정합니다. 두 색상이 같으면 그 색상을 새 색상으로 사용합니다. 나는 실종 된 게 뭔지 모르겠다.잘못된 결과 얻기 Python
코드 : 내가 그냥 잘못 클래스를 테스트하는 생각
class DooDad :
_serialNumber = 1000
def __init__(self, color, weight, value):
self._color = color
self._weight = weight
self._value = value
DooDad._serialNumber = DooDad._serialNumber + 1
self._serialNumber = DooDad._serialNumber
def getColor(self):
return self._color
def getWeight(self):
return self._weight
def getValue(self):
return self._value
def getSerialNumber(self):
return self._serialNumber
def __add__(self, other):
if self._serialNumber - other._serialNumber == 1 or other._serialNumber - self._serialNumber == 1:
newValue = self._value * other._value
else:
newValue = self._value + other._value
maxWeight = max(self._weight, other._weight)
leftColor = self._color
return DooDad(self._color, maxWeight, newValue)
def __sub__(self, other):
leftColor = self._color
rightWeight = other._weight
minValues = min(self._value, other._value)
return DooDad(leftColor, rightWeight, minValues)
def __mul__(self, other):
maxWeight = max(self._weight, other._weight)
avgValue = (self._value + other._value)/2
if self._color != other._color:
colorNotIn = self._notInEither(self._color, other._color)
return DooDad(colorNotIn, maxWeight, avgValue)
return DooDad(self._color, maxWeight, avgValue)
def _notInEither(self, color1, color2):
allColors = {"red", "blue", "green"}
colors = {color1, color2}
print(colors)
colorNotIn = allColors.difference(colors)
return "".join(colorNotIn)
def __repr__(self):
return " %s DooDad weighing %.0f grams. Value = %f points. S/N= %i" % (self._color, self._weight, self._value, self._serialNumber)
if __name__ == "__main__":
doodads = []
doodads.append(DooDad("red",5,10))
doodads.append(DooDad("red",8,9))
doodads.append(DooDad("blue",20,15))
doodads.append(DooDad("green",2,5))
doodads.append(doodads[0] + doodads[1])
doodads.append(doodads[2] + doodads[0])
doodads.append(doodads[3] - doodads[1])
doodads.append(doodads[1] - doodads[3])
doodads.append(doodads[0] * doodads[1])
doodads.append(doodads[0] * doodads[2])
doodads.append(doodads[0] * doodads[4]) #blue but i get red
doodads.append(doodads[3] * doodads[4]) #red but i get blue
for doodad in doodads:
print(doodad)
당신이'예 [0] * 예 [4]'에 의해 달성하고자합니까? – syntagma
두 객체가 곱해질 때 과제를 위해 __mul__ 함수에 새로운 객체를 생성합니다 – user3368956
실제 코드를 게시하십시오. 'Example'은 iterable이 아니기 때문에 ('doodads를 뜻합니다.), 또한 4 개의 원소를 추가했기 때문에 [4]가 없기 때문에 당신이 올린 것은 작동하지 않을 것입니다. 그리고리스트 인덱스는 0을 기준으로합니다. –