Python为什么将13/5返回为0?(正在解决逆波兰表达式问题)

huangapple go评论96阅读模式
英文:

Why is python returning 13/5 as 0? (working on reverse polish notation problem)

问题

我在LeetCode上解决这个问题,但它一直在错误地进行除法运算。

  1. s = []
  2. for token in tokens:
  3. print(s)
  4. if token.isnumeric():
  5. s.append(int(token))
  6. else:
  7. a = s.pop()
  8. b = s.pop()
  9. if token == '+':
  10. s.append(a + b)
  11. elif token == '-':
  12. s.append(a - b)
  13. elif token == '*':
  14. s.append(a * b)
  15. elif token == '/':
  16. print(int(a / b)) # 这里应该是int(a / b)
  17. s.append(int(a / b))
  18. return s.pop()

当我打印这个时:

  1. [4]
  2. [4, 13]
  3. [4, 13, 5]
  4. 0 <- 这里应该是2
  5. [4, 0]
英文:

I'm working on this problem in leet code and it keeps doing division incorrectly.

  1. s = []
  2. for token in tokens:
  3. print(s)
  4. if token.isnumeric():
  5. s.append(int(token))
  6. else:
  7. a=s.pop()
  8. b=s.pop()
  9. if token == &#39;+&#39;:
  10. s.append(a+b)
  11. elif token == &#39;-&#39;:
  12. s.append(a-b)
  13. elif token == &#39;*&#39;:
  14. s.append(a*b)
  15. elif token == &#39;/&#39;:
  16. print(int(a/b))
  17. s.append(int(a/b))
  18. return s.pop()`

when i print this:

  1. [4]
  2. [4, 13]
  3. [4, 13, 5]
  4. 0 &lt;- this should be 2
  5. [4, 0]

答案1

得分: 5

你在进行反向操作。

[4, 13, 5]
a = s.pop() # a现在是5
[4, 13]
b = s.pop() # b现在是13
[4]
int(a/b) # 5 // 13 = 0

你可能要考虑反转你的弹出操作,或者反转你的除法。

英文:

You are dividing backwards.

  1. [4, 13, 5]
  2. a = s.pop() # a is now 5
  3. [4, 13]
  4. b = s.pop() # b is now 13
  5. [4]
  6. int(a/b) # 5 // 13 = 0

You either want to reverse your pops, or reverse your division.

huangapple
  • 本文由 发表于 2023年2月10日 03:34:52
  • 转载请务必保留本文链接:https://go.coder-hub.com/75403589.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定