分部问题?

时间:2014-03-16 17:59:58

标签: python division

基本上我做了这个程序来练习python(我是一个完整的菜鸟),我非常喜欢python,作为我学习的第一个编程语言,或者在完成一个有效的程序时我觉得非常有成就(即使它是你好世界)。所以无论如何,我使用从书本和互联网上的东西学到的技术制作了一个小程序,我有一个问题,该程序工作正常,没有问题,但最后有一个分区,其中justr出错,它不能分开任何东西,除非它是一个整数(例如,100/20 = 5,但如果我做了20/100它将等于0而不是0.2),这也会影响它,如果数字将是负数,它只是恐慌。我试过15/20,看它是否正在四舍五入,但它仍然说0.任何帮助都会很棒^ _ ^ 这是代码:

a=100
b=50
c=10
z=110
o=5
zoo=z+o+o

print "What is the value of zoo if:"
print "z=110"
print "o=5"
print "zoo=z+o+o"
import time
time.sleep(5)
print zoo,"of course!"

import time
time.sleep(1)

print "Wait..",a+b-(c)*3,"is the same as zoo except we just did it there using other code!"
import time
time.sleep(3)
print "We did it using 100+50-(10)*3 which then adds to zoo or 120!"

import time
time.sleep(3)

print "were gonna try something fun now!"
import time
time.sleep(2)

print "Please pick a number:"
number=int(raw_input())

print "and another:"
another=int(raw_input())

print "the two numbers you chose multiplied together makes",number*another
import time
time.sleep(2)
print "ok now were going to take your two numbers and divide them"
print "Your two numbers divided=",number/another
import time
time.sleep(1)
print "Ok im bored now, im going to go, have a nice day ^_^"

这是一个有问题的芒果:

What is the value of zoo if:
z=110
o=5
zoo=z+o+o
120 of course!
Wait.. 120 is the same as zoo except we just did it there using other code!
We did it using 100+50-(10)*3 which then adds to zoo or 120!
were gonna try something fun now!
Please pick a number:
15
and another:
20
the two numbers you chose multiplied together makes 300
ok now were going to take your two numbers and divide them
Your two numbers divided= 0
Ok im bored now, im going to go, have a nice day ^_^

哦,我在python 2.7.6

5 个答案:

答案 0 :(得分:0)

在此行上方添加:

print "Your two numbers divided=",number/another

此代码:

number, another = number + .0, another + .0

您的代码无效的原因是因为您正在使用int's。除以整数时,它们返回整数或整数。您需要通过向数字添加floats将数字转换为.0。这将允许您获得绝对分割结果。

答案 1 :(得分:0)

执行整数除法时

15/20 = 0,因为结果小于1。因此它会截断为0


//用于划分整数,/用于浮点数 - 您使用了错误的运算符,因此得到的结果不正确:

>>> 15 / 20
0
>>> 15 // 20
0.75

您可以通过从from __future__ import division添加到您的脚本来解决此问题。当使用float运算符并使用/进行整数除法时,这将始终执行//除法 - 所以只需执行您正在执行的操作,它将返回预期结果:

>>> from __future__ import division
>>> 15 / 20
0.75

我会使用import的上述解决方案;但还有其他方法。另一种选择是使至少一个操作数为float,例如, float(number) / another

>>> number = 15
>>> another = 20
>>> float(number) / another
0.75

以上是有效的,因为除法的结果取决于Python中使用的值类型。

答案 2 :(得分:0)

您可以添加

from __future__ import division

位于文件顶部。然后默认的除法策略将是您所期望的,即浮点除法。 Python 2.7默认执行整数除法。

答案 3 :(得分:0)

在Python 2.x中,两个int的/是一个int。

在Python 2.x中,一个int和一个浮点数的/是浮点数。

在Python 2.x中,两个浮点数的/是浮点数。

在Python 3.x中,两个int的/是一个浮点数。

在Python 3.x中,一个int和一个float的/ quot是浮点数。

Python 3.x中两个浮点数的/是浮点数。

Python 3.x中两个int的//商是一个int。

在Python 3.x中,一个int和一个float的//是一个整数浮点数。

Python 3.x中两个浮点数的//商是一个整数浮点数。

在Python 2.x中,你可以" from __future__ import division"在模块的顶部,以获得3.x行为。

因此,既然您正在使用2.x,那么您可能应该" from __future__ import division"在模块的顶部,或者在/ division之前将一个或两个int转换为float(int_var)浮动。

答案 4 :(得分:0)

添加到所有答案。在某些语言(包括python)中,除法运算符结果取决于所使用的值类型,例如:

>>> 1 / 2 # integer divided by integer
0
>>> 1.0 / 2 # float divided by integer
0.5