我们在应用程序中向代理显示不带尾随零的百分比值(50%
比现在更容易快速扫描50.000%
),到目前为止,我们只是使用quantize
强力标准化该值以删除尾随零。
今天早上我决定考虑使用它Decimal.normalize
,但遇到了这个:
给定十进制值:
>>> value = Decimal('50.000')
Run Code Online (Sandbox Code Playgroud)
标准化该值:
>>> value = value.normalize()
Run Code Online (Sandbox Code Playgroud)
结果是:
>>> value
Decimal('5E+1')
Run Code Online (Sandbox Code Playgroud)
我理解值是相同的:
>>> Decimal('5E+1') == Decimal('50')
True
Run Code Online (Sandbox Code Playgroud)
但从非技术用户的角度来看,5E+1
基本上是没有意义的。
有办法转换Decimal('5E+1')
成Decimal('50')
吗?
我不想做任何会改变 的值的事情Decimal
(例如,完全删除小数位),因为该值可能是例如Decimal('33.333')
. IOW,不要将我的50.000
示例混淆为我们只处理整数。
我不知道我是否正确地想到这一点,也许有人会让我直截了当.
假设我有一个包含以下内容的models.py:
class Order(models.Model):
customer = models.foreignKey(Customer)
total = models.charField(max_length=10)
has_shipped = models.booleanField()
class Product(models.Model):
sku = models.charField(max_length=30)
price = models.charField(max_length=10)
Run Code Online (Sandbox Code Playgroud)
现在,显然订单将包含产品而不仅仅是产品.将产品添加到订单的最佳方式是什么?我能想到的唯一方法是在"订单"中添加另一个名为"产品"的字段,并在其中填入带有sku的CSV.由于显而易见的原因,这并不理想,但我对这些东西并不是很擅长,也不知道更好的方法是什么.
(请记住这是伪代码,所以不要介意拼写错误等)
我正在尝试在Python中创建一个我可以排序的字典,但是当我添加新内容时它似乎会改变顺序.有没有解决的办法?
我想创建一个像:
000000000001
Run Code Online (Sandbox Code Playgroud)
保存到数据库.我显然无法以这种方式(我不认为)在数据库中增加,所以我正在寻找最有效的方法从数据库中提取前一个数字并将其递增1以创建下一条记录:
000000000002
Run Code Online (Sandbox Code Playgroud)
等等...
如果我手动存储第一个数字,我可以进行某种手动输入以使其保持零的数量吗?我甚至不知道从哪里开始.
在接受具有网关事务的付款的订单的系统中,对象应如下所示:
class Order(object):
... Inside init ...
self.total_in_dollars = <Dollar Amount>
self.is_paid = <Boolean Value>
class Payment(object):
... Inside init ...
self.order = order_instance
self.amount = order.total_in_dollars
class GatewayTransaction(object):
... Inside init ...
self.payment = payment_instance
self.amount = <Dollar Amount>
Run Code Online (Sandbox Code Playgroud)
这似乎是这样做的方式(显然这不是具有整数美元金额的真实代码,但是你得到了图片).我是这样做的,因为订单可以在没有付款的情况下存在,并且在实际的PayPal交易发生之前可以存在付款.这是否缺乏你的意见?我的思考是否倒退?
或者,它应该更像这样:
class GatewayTransaction(object):
payment = payment_instance
amount = <Dollar Amount>
class Payment(object):
amount = <Dollar Amount>
gateway_transaction = gateway_transaction_instance
class Order(object):
amount_in_dollars = <Dollar Amount>
payment = payment_instance
Run Code Online (Sandbox Code Playgroud) 假设我有一个观点:
def pony_view(request, arg1, arg2):
... Make ponies, etc ...
Run Code Online (Sandbox Code Playgroud)
和中间件:
class MyMiddleware(object):
def process_request(request):
# How do I access arg1, arg2 here?
Run Code Online (Sandbox Code Playgroud)
当然arg1和arg2将通过URL params与urls.py传递.
我需要这样做的原因是因为我想在view函数运行之前向request.session添加一些东西(虽然我需要从URL中获取).
如果您查看此URL,您将看到GitHub正在发布各种技术信息.这是一个很好的做法,以便用户可以通过电子邮件向您发送有关错误等的信息吗?
http://waitdownload.github.com/cheetahtemplate-cheetah-v2.4.2-0-gd20b523.zip
对于错误页面来说,这至少是一个很好的设计.
我尝试archive
通过打开我的回购更改日志在Tortoise HG中使用.这似乎不像SVN的export
命令,我可以简单地将远程存储库导出到当前目录.我使用它来获取我的生产源的干净副本(没有注释和存储库数据).我怎么能在HG做这样的事情?或者,我应该只使用克隆并手动处理与repo相关的数据?
顺便说一下,我需要通过命令行完成这一切,因为我不打算在我的Linux服务器上使用Tortoise HG.
任何帮助深表感谢.
请看以下示例:
>>> from decimal import Decimal
>>> nrml_price = Decimal('0.59')
>>> discounted = nrml_price / 3 # Taking 2/3 off the price with a coupon
Decimal('0.1966666666666666666666666667') # Customers don't have fractions of a penny
>>> (nrml_price / 3).quantize(D('0.00')) # So I quantize to get 2 decimal places
Decimal('0.20') # Ca fait combien? Cest vingt cents.
Run Code Online (Sandbox Code Playgroud)
问题是,我现在已经在技术上向客户收取超过预期价格的费用,尽管不到3/10美分,但技术上不正确.
我如何克服这样的问题?我是否将其视为生活中的事实,或者是否有可接受的方式来做这种事情(例如,总是向客户收取最近的便士)?
我读了这个答案,它让我很困惑:TicTacToe AI做出错误的决定
有人可以帮我理解如何将它应用于Tictactoe吗?
注意:我目前有一个Board类,它存储有关游戏的状态(例如,游戏是否与当前移动一起完成?,是否有赢家?等)当前板上的每个移动都存储为1 - 9(左上角)在行的右下角).我可以轻松地复制当前的电路板状态.我可以返回"X"和"O"的当前移动列表,以及来自Board的可用移动.
python ×6
django ×4
algorithm ×1
concurrency ×1
currency ×1
decimal ×1
dictionary ×1
e-commerce ×1
exponent ×1
github ×1
mercurial ×1
minimax ×1
oop ×1
python-2.7 ×1
tortoisehg ×1