我想写一些看起来有点像我目前在以下定义中的内容:
def rounding( sp1, sp2, sp3, sp4 ):
if () <= 700.:
round(object, -1)
elif () <= 1000.:
round(object, (-1*5))
elif () <= 10000.:
round(object, -2)
elif () > 10000.:
round(object, -3)
else:
print "Error"
return [ sp1, sp2, sp3, sp4 ]
我真的是所有这一切的初学者,我可能在上面的代码中犯了一些可怕的错误。我基本上已经计算了这4个值sp1,sp2等。然后我希望能够同时对这些值进行舍入,但是根据它们各自的值,它们必须以不同的数量舍入。
If 'sp' <= 700 : rounded to nearest 10
700 < sp <= 1000 : rounded to nearest 50
1000 < sp <= 10000 : rounded to nearest 100
10000 < sp : rounded to nearest 1000. (not code)
如果有什么事可以帮助我,我将非常感激,谢谢!
答案 0 :(得分:2)
棘手的部分是四舍五入到最接近的50.这可以通过将数字加倍,然后四舍五入到最接近的100,然后再次将数字减半来实现。至少这是我能想到的最简单的方式。
def nearest_50(n):
return round(n*2, -2)/2
至于其他方面,您的代码离正确的解决方案并不遥远。正如Ignacio建议的那样,你应该一次只舍入一个值
def my_round(n):
if n <= 700:
return round(n, -1)
elif n <= 1000:
return nearest_50(n)
elif n <= 10000:
return round(n, -2)
else:
return round(n, -3)
然后围绕这样的数字列表
mylist = [... some numbers ...]
rounded = [my_round(n) for n in mylist]
答案 1 :(得分:0)
编写一个对单个值进行舍入的函数,然后使用列表推导将所有值一次传递给它。