为什么在此示例中他使用浮点数?

如何解决为什么在此示例中他使用浮点数?

| 我是一个很难学习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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?