我這里有這個功能:def g(x: int) -> int: if x > 0: x = x * (-1) if x < 0: x = x * (-1) return x當我調用 g(10) 函數時,它返回 10。為什么它不返回 -10?我該怎么做才能讓它返回-10?
2 回答

慕斯王
TA貢獻1864條經驗 獲得超2個贊
您檢查了兩次,因此您兩次負值,簡單的解決方案:
def g(x: int) -> int:
if x > 0:
x = x * (-1)
elif x < 0:
x = x * (-1)
return x
print(g(10))
輸出:
-10

飲歌長嘯
TA貢獻1951條經驗 獲得超3個贊
您的代碼太復雜,因為兩個 if 條件下的操作是相同的 - 您可以簡化它:
def g(x: int) -> int:
return x * (-1)
但至于為什么你的原始代碼不起作用 -
假設您傳入的值是 10。
因此第一個 if 條件if x > 0滿足,x 現在變為 -10 ( x=x * -1)
然后測試第二個 if 條件if x < 0- 現在也是 True,因此 x 改回 10。
這兩個 if 語句彼此獨立,并且它們按照您給出的順序依次運行。
如果您希望它們相互依賴,請使用 elif :
def g(x: int) -> int:
if x > 0:
x = x * (-1)
elif x < 0:
x = x * (-1)
return x
這本來可以達到你想要的結果 - 但正如這個答案頂部提到的那樣,對于你實際想要做的事情來說太復雜了。
添加回答
舉報
0/150
提交
取消