파이썬은 숫자의 올바른 값을 0의 제곱으로 반환하는 데 문제가있는 것 같습니다. 리터럴 방정식을 사용하면 제대로 작동하지만 항상 0보다 큰 정수보다 더 복잡한 경우에는 양수 1을 반환합니다.
다음은 몇 가지 테스트입니다제로 지수 방정식에 표시가있는 문제
>>> -40 ** 0 # this is the correct result
-1
>>> (0 - 40) ** 0 # you'd expect this to give the same thing, but...
1
>>> a = -40 # let's try something else...
>>> a ** 0
1
>>> int(-40) ** 0 # this oughtn't to change anything, yet...
1
>>> -66.6 ** 0 # raw floats are fine.
-1.0
>>> (0 - 66.6) ** 0.0 # ...until you try and do something with them.
1.0
UPDATE : pow()
도이 결과를 제공, 그래서 아마 첫 번째 결과는 특별하다 ...
>>> pow(-60, 0)
1
이 서명 정수와 약간의 문제가 될 수 있을까요? 입력이 양수 또는 음수 값인지 또는 0인지에 따라 값 1, -1 또는 0을 갖는 3 진 스위치에이 값이 필요합니다. 내 목적 변수
스위치를 사용하여 다음
if val > 0: switch = 1
elif val < 0: switch = -1
else: switch = 0
을 ... 그리고 : 나는 같은과 같은 일을 수행 할 수 있습니다.
하지만 그건 파이썬이 제로 - 파워를 다루는 방법에 관한 질문에 대답하지 못할 것입니다.
(... 나는 또한 -40 ** 0
는 사고 (급격하게)에 의해 -1 반환 것을 받아 들일 것입니다,하지만이 경우 의심)
'0'의 제곱으로 올림 된 0이 아닌 정수는 '+ 1'을 반환해야합니다. 따라서'(0-40) ** 0'은 정확하게 '+ 1'을 생성합니다. '-40 ** 0'이'-1'을 리턴하는 이유는'**'가'-'보다'40 '에 더 강하게 묶이기 때문입니다. – eigenchris
나는 그때'a = -60; ** 0 -> 1'은'(-60) ** 0'으로 평가됩니까? 그건 나에게 맞는 말이야. – Augusta
맞습니다. :) – eigenchris