【发布时间】:2015-08-24 20:11:14
【问题描述】:
所以我正在开发一个获取酒店详细信息的命令行应用程序,其中一个详细信息是它们的“星级”。我可以列出我得到它的字符串,但这并不好玩,我希望应用程序真的看起来不错。所以我想自己创建星级的外观。
我不知道,这可能需要比我想象的更多的数学知识(它甚至可以成为一个很好的面试问题)。
详情如下:
- 我传入的数据如下所示:
3.7 stars - 我想得到一个最接近的估计,在这个 3.5 就足够了。
- 我将它作为字符串返回,看起来应该像“++-”,其中“+”表示满星,“-”表示半星
到目前为止我的代码:
def format_hotel_rating(self, rating):
rating_as_num = float(rating[:3]) # rating => "3.7 stars"
for i in range(0, new_rating * 10):
if i % 10 == 0:
new_rating += "+"
# still missing half star logic
到目前为止,我的逻辑是这样的:
- 取小数并乘以 10(这样可以更容易地迭代)
- 每 10 次迭代,添加一个满星
- 当不能有另一个 10 的倍数时,在最后一个 10 的倍数和最后一次迭代之间计算每个迭代
- 例如 10(满星)、20(满星)、30(满星)、31、32、33、34、35、36、37
- 然后,确定
37是否更接近35或40。如果接近 35,则附加半星“-”,否则如果接近 40,则附加满星“+”
几个小时以来,我一直试图在脑海中解决这个问题(我想我什至无法通过自己的面试),但我还没有开发出任何成功的方法。
我怎样才能做到这一点?
【问题讨论】: