【问题标题】:Division as input parameter returning 0除法作为输入参数返回 0
【发布时间】:2017-02-19 15:41:16
【问题描述】:

所以我试图输入一个除法问题作为参数,当答案为

def division(x): print x 其中“x”是 1/2,代码打印“.5”

我使用的是 JES 版本 5.020。任何指导将不胜感激!

【问题讨论】:

  • 添加def divison()的逻辑
  • 我不知道那是什么意思。有没有我可以阅读的文章?

标签: python jython division integer-division jes


【解决方案1】:

使用 float() 函数。

5/2=2
浮点数(5)/浮点数(2)=2.5

【讨论】:

  • 我无法让它与 float() 函数一起使用,因为我认为输入已经被分割了。
  • 尝试将浮点数用于放入函数中的数字 - ex x=float(x) def division(x): print (x)
  • 基本上,只需将数字转换为浮点数,然后再将它们放入函数中。
【解决方案2】:

首先,如果只有一个名为 division 的函数只是打印输入,那么它是没有意义的。

现在到实际问题。您正在使用 python 2。在 python 2 中,整数除法始终是整数。所以 1/3(应该等于 0.33)就是 0。

解决方案是将至少一个数字转换为浮点数。这可以通过以下方式完成:

  1. float(1)/3
  2. 1.0/3

是的,在您当前的设置中,这种划分将在数字传递给您的函数之前发生。所以你的函数完美运行,需要改变的是输入。

编辑:

如果您无法更改输入并且需要支持整数的浮点除法,请使用 future 模块。这为 python 2 带来了一些 python 3 的特性。

将此行添加到代码的开头:

from __future__ import division

【讨论】:

  • 我正在尝试做的事情是否可能?在除法发生之前,输入不能转换为浮点数。我希望用户只指定参数“1/2”并让函数知道它是 0.5 而不是 0。
  • 有可能,但我不明白你为什么要这样做。数字输入应该是数字,而不是数字的分数表示。至少这是编程语言所假设的。如果您希望用户能够以该语言不支持的表示形式输入数字,则应输入为字符串,然后根据需要处理输入。但幸运的是,在你的情况下,一个小的修改可以让你得到你想要的结果。请查看我编辑的答案。
  • 是的,我试过from __future__ import division,但它不会加载并给出无效的语法错误。我真的不确定从这里去哪里。
  • 你能告诉我们你看到的确切代码和确切的错误吗?这也可能是一个矫枉过正,但你可以转移到 python 3 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 1970-01-01
  • 2014-02-18
  • 1970-01-01
  • 2018-07-06
  • 2019-10-13
相关资源
最近更新 更多