2017-01-29 1 views
-2

속성이 'latest_level'인 클래스가 있는데 이는 부동 소수점 숫자 여야합니다. 그런 다음 방정식에 latest_level을 포함하는 메서드를 사용하여 다른 부동 소수점 숫자를 반환합니다. 나는 줄을 사용하는 경우이 방법에서는 : 나는 self.latest_level이 목록을 의미 가정Python 3 : 부동 소수점 또는 목록입니까?

TypeError: float() argument must be a string or a number, not 'list' 

:

def relative_water_level(self): 
    level = float(self.latest_level) 

을 나는 출력을 얻을. 데프 relative_water_level (자동) : 나는이 라인을 변경하는 경우

level = float(self.latest_level[0]) 

을 나는 출력을 얻을 : 나는 가정

TypeError: 'float' object is not subscriptable 

는 self.latest_level는 부동 소수점을 의미합니다. 왜 이런 일이 일어나는 지 아무도 몰라요. 그리고 자기를 대우하기 위해 어떻게 얻을 수 있죠 .latest_level을 부유물로?

편집 : 나중에 시도하지 않습니다. 이 방법의 나머지 부분은 다음과 같습니다

level = float(self.latest_level[0]) 
     low = float(self.typical_range[0]) 
     high = float(self.typical_range[1]) 
     return ((level - low)/high) 

그리고 오류가 __getitem__() 메소드를 구현 뭔가를 참조하는 오류가

File "C:\Users\rache\Documents\Flood Warning\partia-flood-warning 
system\floodsystem\station.py", line 58, in relative_water_level 
level = float(self.latest_level[0]) 

TypeError: 'float' object is not subscriptable 
+2

안녕하세요, Rachel 님, 스택 오버플로를 환영합니다. 이 동작을 증명할 수있는 코드를 포함시키는 것이 가장 좋습니다. 그것이 없다면, 우리는 실제로 유용한 답을 줄 수는 없으며 추측에 의지해야합니다. 그것은 당신이 그것을 아래 첨자로 띄우기 위해 캐스팅 한 후에, 우리는 정말로 알 수 없습니다. –

+0

안녕하세요 짐, 조언 해 주셔서 감사합니다. 질문에 약간의 코드를 추가하겠습니다. –

+2

두 가지 오류에 대한 전체 오류 스택 추적을 표시하십시오. 이러한 에러가 같은 메서드에서 발생하는 경우, 메서드는 두 번 다른 메서드에서 호출 될 수 있습니다. 즉, 'latest_level'은 한 번 float이고 다른 한 번은 목록입니다. – poke

답변

0

첨자에 객체 위에서 언급 한 라인에 지정합니다. latest_level의 유형을 변경했을 수 있습니다. 동일한 오류가 발생하는 샘플 코드를 추가했습니다. 플로트 (self.latest_level) 전에 사용 형 (self.latest_level)를 디버깅 변경 추적 스택에있어서 대

class Level: 
latest_level = 20.0 
def getLevels(self): 
    self.latest_level = [20,30] 
def relative_water_level(self): 
    level = float(self.latest_level[0]) 
    print(level) 

waterLevel = Level() 
waterLevel.relative_water_level() 
waterLevel.getLevels() 
waterLevel.relative_water_level() 

.

+0

디버깅에 대한 좋은 아이디어. latest_level은 사실 float입니다. 내가 그것을 방정식에서 사용할 때 목록으로 취급하는 이유는 아직도 이해할 수 없습니다. 당신의 도움을 주셔서 감사합니다! –

+0

분명히 어딘가에 코드를 변경해야합니다. 너는 나에게 코드를 어쩌면 보여줄 수 있니? – Harry

0

문제가 해결되었습니다. 데이터를 가져 오는 일부 홍수 모니터링 스테이션이 곳곳에있는 숫자 목록으로 엉망인 데이터를 만들어 내고 있기 때문에 지금은 해당 스테이션을 무시해야합니다. 그 강 근처에 살고있는 여러분 모두에게 도움과 행운을 보내 주셔서 감사합니다!