我正在学习python并尝试在pyschools做练习(如果有人知道它是什么)。无论如何,我有一个练习,要求我执行以下操作:编写一个函数百分比(值,总),它接受两个数字作为参数,并返回百分比值作为整数。
这是我的代码:
def percent(value, total):
percent = value / total * 100
return int(percent)
它在我的Python空闲中运行良好,它提供了所有正确的答案。但是,当我在pyschools网站上运行时,它会说,例如,当使用参数46和90调用函数时,函数返回0.但是,在我的python空闲时,它正确返回51。 可能是什么问题? 非常感谢您的帮助!
答案 0 :(得分:6)
在python 2.x中,除法是整数除法,在python 3.x中,它不是。这可能解释了您的问题。
此外,您可以使用括号来使代码更具可读性。
答案 1 :(得分:6)
你需要使用浮动分区。
在你的情况下,你可以应用这个小技巧:
percent = (100. * value) / total
当其中一个因素是浮点数时,操作会给你浮点数。您不需要全部转换。 请注意,这不起作用:
percent = (value / total) * 100.
因为第一个操作是以整数模式执行的
(顺便说一句,不要忘记将百分比转换为整数以符合学校的要求。我没有这么做是为了清晰)
答案 2 :(得分:1)
尝试以下方法:
return int(float(value) / float(total) * 100.0)
确保值和总数都是浮点数。这样就可以传入字符串并仍然得到正确的答案。
答案 3 :(得分:0)
使用与该函数同名的变量(percent
)有点可疑,让谨慎的读者停下来,想知道这是否合法。在任何情况下,您根本不需要临时变量。考虑仅使用临时变量来分解长表达式或者需要进行一些调试时。
您需要做的就是干净清晰地解决问题,以便在Python 2.x和3.x上正确运行,重新排列评估顺序并使用100.0
代替{{1}所以第一个算术运算是使用浮点运算完成的:
100