pyschools:网站给出错误答案?(主题2,问题7)

2 投票
4 回答
1791 浏览
提问于 2025-04-17 07:47

我刚开始学习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

顺便问一下,为什么要把输入参数赋值给变量?它们本来就是变量。如果你想让它们叫ab,那就直接这样接收它们就行了:

def percent(a, b):
    return int((float(a) / b) * 100)

撰写回答