Python pyschools:站点给出了错误的答案?(专题2,问题7)
我是python新手!我完成了学业,读了几本书,现在正在尝试挑战。成功地完成了变量和数据类型,但主题2(函数)中的问题7让我感到非常痛苦 我正在使用Eclipse和Python(3.2版)。在我的月食中,我得到了答案100、51和525。这些都是pyschools期望的答案,但它显示我的函数返回100、0和500 以下是问题(希望我可以在这里发布!):Python pyschools:站点给出了错误的答案?(专题2,问题7),python,Python,我是python新手!我完成了学业,读了几本书,现在正在尝试挑战。成功地完成了变量和数据类型,但主题2(函数)中的问题7让我感到非常痛苦 我正在使用Eclipse和Python(3.2版)。在我的月食中,我得到了答案100、51和525。这些都是pyschools期望的答案,但它显示我的函数返回100、0和500 以下是问题(希望我可以在这里发布!): 编写一个函数percent(value,total),该函数接受两个数字作为参数,并以整数形式返回百分比值。 下面是我的函数 def p
编写一个函数percent(value,total),该函数接受两个数字作为参数,并以整数形式返回百分比值。
下面是我的函数
def percent (value, total):
a = value
b = total
return(int((a / b) * 100))
percent(70, 70)
percent(46, 90)
percent(63, 12)
有谁能告诉我学校真正希望我做什么,或者我哪里出了问题
谢谢 Python使用严格的整数数学对整数执行数学运算,截断小数部分
为了避免这种情况,在除法之前,将一个输入乘以1.0。您使用的是Python 3.x,而他们使用的是Python 2.x。在Python2.x中,当参数是整数时,
/
操作始终是整数除法<代码>1/2为0
。因此,使用float()
将一个参数更改为浮点数,例如int((float(a)/b)*100)
。然后,a/b
将有一个小数部分
或者,假设他们使用的是Python 2.x的最新版本,您只需将其添加到脚本的开头,就可以在站点上使用:
from __future__ import division
另外,为什么要将输入参数指定给变量?它们已经是变量了。如果您希望将它们命名为a
和b
,只需按这种方式接收即可:
def percent(a, b):
return int((float(a) / b) * 100)
可以使用截断除法,如下所示:
def percent(value, total):
return value * 100 // total
优点:
(0)从2.2版起适用于所有蟒蛇
(1) 读者不必猜测运行的Python版本,也不必检查模块的开头,就可以了解这一行的功能
(2) 避免任何潜在的浮点问题
(3) 避免使用float
和int
即节省两个(相对昂贵的)函数调用
请仔细注意:/
适用于float
对象以及int
对象。问题是arg是“数字”(可以包括float
对象),结果应该是“整数”(不一定是int
对象)。这给了你相当大的许可
>>> percent(63.001, 11.9999)
525.0 # That's an integer
如果他们坚持返回值是
int
对象,那么您当然需要int()
,因为它使用的是Python2.x,您至少需要将一个值转换为float
def percent(number, total):
return int((float(number)/total) * 100)
这很好谢谢!这是有效的:返回int((float(a)/b)*100)您的注释仅适用于Python2.x的默认行为。在除法之前将分子乘以100.0是一种更好的策略。