如何解决为什么在此示例中他使用浮点数?
| 我是一个很难学习Python的初学者。这是我学习的第一门编程语言,我一直坚持练习。 行使: \“解释为什么使用4.0而不是仅使用4.0。”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.\"
老实说,我无法找到他为什么要在第2行使用浮点数的任何原因,而不是作为示例,如果我有一个浮点数,它将影响表达式评估的其余部分(cars_driven * space_in_a_car),从而导致120.0。
我想念什么吗?
解决方法
这是一个简单的问题,有一个简单的答案,出于某种原因我使它过于复杂。
(假设您知道为什么
3/4
返回0
,为什么3/4.0
返回0.75)
我看了一下书,代码只是那一点,似乎没有更多了,它的确要求:
说明为什么使用4.0代替
只是4。
事实证明,这是一个奇怪的问题,因为实际上没有任何理由。大卫·赫弗南(David Heffernan)一直都是对的。
因此,当您添加.0
时,它只比将浮动的拼车容量转向没有效果,因为您只是这样做:
carpool_capacity = cars_driven * space_in_a_car
我不明白作者的目的,唯一的不同是,一个印刷了120.0
,另一个印刷了120
。
正如我之前指出的:
average_passengers_per_car = passengers / float(cars_driven) #added float
因为(例如)如果原始代码中的“ 9”平均为“ 10”而不是“ 11”,这在我看来对平均而言更合理,因为(更)合理。
抱歉让我感到困惑,我希望我现在就明白了:)并且对您有所帮助!
旧:
原因大概是这样的:
3/4 # returns 0
那是因为int/int == int
,所以3中有4个“适合” 0,而没有小数点,因为它是一个整数。
你应该做:
3/4. # returns 0.75
要么
3/float(4)
这适用于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
由于汽车中的空间不能是4个半座位,而平均空间可以是2个半人,因为它是一个数字,而不是实际的人。
, 在您的问题给出的代码中,没有充分的理由使用浮点值。
, 通常,整数div与浮点div不同
整数div:
myInt = 4 / 5
myInt == 0
浮动div:
myFloat = 4.0 / 5.0
myFloat = 0.8
通过将space_in_car设置为浮点数,然后将运算结果计算为浮点数(不舍入)
但是在此示例中,space_in_car仅用于乘法运算。对于乘法运算同样适用,但值不变(120与120.0相同)。我的猜测是打算将其用于显示上述特性的部门,但有lapus calami。
, 我认为措辞有误:由于space_in_a_car仅以乘法出现,因此更改其值时就不可能观察到问题。
如果驾驶员的价值不等于乘客的价值除数,就会发现一个问题
看看更改驱动程序的值时会发生什么:
form = (\'space_in_a_car : %s\\n\'
\'drivers : %s\\n\'
\'passengers : %s\\n\'
\'cars_driven : %s\\n\'
\'average_passengers_per_car : %s\\n\\n\')
for nbdrivers in (30,30.0,47,47.0):
cars = 100
space_in_a_car = 4
drivers,passengers = nbdrivers,90
cars_driven = drivers
carpool_capacity = cars_driven * space_in_a_car
average_passengers_per_car = passengers / cars_driven
print form % (space_in_a_car,drivers,passengers,cars_driven,average_passengers_per_car)
结果
space_in_a_car : 4
drivers : 30
passengers : 90
cars_driven : 30
average_passengers_per_car : 3
space_in_a_car : 4
drivers : 30.0
passengers : 90
cars_driven : 30.0
average_passengers_per_car : 3.0
space_in_a_car : 4
drivers : 47
passengers : 90
cars_driven : 47
average_passengers_per_car : 1
space_in_a_car : 4
drivers : 47.0
passengers : 90
cars_driven : 47.0
average_passengers_per_car : 1.91489361702
然后,必须是浮点数的驱动程序,而不是space_in_a_car
, cars = 100
space_in_a_car = 4.0
drivers = 30
passengers = 90
# 90 % 4 = 2(man),90 / 4.0 = 22.5(car)
print \"Need %d cars.\" % int(round(90 / 4.0))
# He wants you to think more about it.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。