pyschools:网站给出错误答案?(主题2,问题7)
我刚开始学习Python!我已经学习了好几本书,现在正在尝试pyschools的挑战。我成功完成了变量和数据类型的部分,但第二个主题的第七题(函数)让我很头疼。
我在使用Eclipse和Python(版本3.2)。在我的Eclipse中,我得到了答案100、51和525。这些答案和pyschools期望的答案是一样的,但它显示我的函数返回的是100、0和500。
这是题目(希望我可以在这里发出来!):
写一个函数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)
有没有人能告诉我pyschools到底想让我做什么,或者我哪里出错了?
谢谢!
4 个回答
0
在Python中,做整数的数学运算时,它会严格按照整数来计算,直接把小数部分去掉。
为了避免这种情况,可以在进行除法运算之前,把其中一个数字乘以1.0。
1
因为它使用的是Python 2.x,所以你至少需要把一个数值转换成浮点数。
def percent(number, total):
return int((float(number)/total) * 100)
这样做就可以正常工作了。
9
你在用Python 3.x,而他们在用Python 2.x。在Python 2.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)