为什么他在这个例子中使用浮点?

010*_*amt 5 python floating-point

我是一个初学者,从学习Python的艰难方式学习Python.这是我学习的第一门编程语言,我被困在练习中.

练习:"解释为什么使用4.0而不仅仅是4".

cars = 100
space_in_a_car = 4.0 #Why does he uses 4.0 instead of 4 here?
drivers = 30
passengers = 90
cars_not_driven = cars - drivers
cars_driven = drivers
carpool_capacity = cars_driven * space_in_a_car
average_passengers_per_car = passengers / cars_driven


print "There are", cars, "cars available."
print "There are only", drivers, "drivers available."
print "There will be", cars_not_driven, "empty cars today."
print "We can transport", carpool_capacity, "people today."
print "We have", passengers, "to carpool today."
print "We need to put about", average_passengers_per_car, "in each car."
Run Code Online (Sandbox Code Playgroud)

老实说,我找不到任何理由为什么他会在第2行使用浮点除了作为一个例子,如果我有一个浮点数它影响表达式评估的其余部分(cars_driven*space_in_a_car)导致120.0 .

我错过了什么吗?

Tru*_*ufa 6

这是一个简单的问题,有一个简单的答案,由于某种原因我过度复杂.

(假设你知道为什么3/4返回0以及为什么3/4.0返回0.75)

我看了看这本书,代码只是那一点,它似乎没有任何更多,它确实问:

解释为什么使用4.0而不是4.

事实证明这是一个奇怪的问题,因为实际上没有理由.David Heffernan一直都是对的.

所以,当你添加.0它时,它没有任何效果,因为你只需要在浮点数中转换拼车容量:

carpool_capacity = cars_driven * space_in_a_car
Run Code Online (Sandbox Code Playgroud)

我无法理解作者的目标是什么,唯一值得注意的区别在于,一个是打印120.0而另一个是打印120

正如我之前指出的那样:

average_passengers_per_car = passengers / float(cars_driven)  #added float
Run Code Online (Sandbox Code Playgroud)

会更有意义,因为,例如,如果passengers = 93原始代码中的平均值是,3而不是3.1我认为平均值更合理.

对不起,混乱,我希望我现在得到它:)它有帮助!

旧:

原因可能是这样的:

3/4 # returns 0
Run Code Online (Sandbox Code Playgroud)

那是因为int/int == int,因为它是一个int,所以4"适合"3次中的0次,并且没有小数点.

你应该做:

3/4. # returns 0.75
Run Code Online (Sandbox Code Playgroud)

要么

3/float(4)
Run Code Online (Sandbox Code Playgroud)

这适用于python 2.x而不适用于python 3

这根本没有意义,除非我遗漏了一些东西,否则我认为这是"错误的"!

这会更有意义:

cars = 100
space_in_a_car = 4 #not float
drivers = 30
passengers = 90
cars_not_driven = cars - drivers
cars_driven = drivers
carpool_capacity = cars_driven * space_in_a_car
average_passengers_per_car = passengers / float(cars_driven)  #added float
Run Code Online (Sandbox Code Playgroud)

由于汽车的空间数量不能是4个半座位,而平均值可能是2个半人,因为它是一个数字而不是实际的人.