gpt4 book ai didi

Python,第一次使用 Decimal 和 quantize

转载 作者:太空宇宙 更新时间:2023-11-04 09:11:36 29 4
gpt4 key购买 nike

我只是想知道是否有人对如何改进此代码有任何意见。我的目标是让它尽可能像 pythonic,因为我正在努力真正学好 python。该程序运行良好,但如果您发现任何您认为可以改进的地方(不是重大更改,只是基本的“我是 python 新手”的东西),请告诉我这个程序。

#!/usr/bin/python
from decimal import *


print "Welcome to the checkout counter! How many items are you purchasing today?"

numOfItems = int(raw_input())

dictionary = {}

for counter in range(numOfItems):

print "Please enter the name of product", counter + 1
currentProduct = raw_input()

print "And how much does", currentProduct, "cost?"
currentPrice = float(raw_input())

dictionary.update({currentProduct:currentPrice})

print "Your order was:"

subtotal = 0
for key, value in dictionary.iteritems():

subtotal = subtotal + value
stringValue = str(value)
print key, "$" + stringValue

tax = subtotal * .09
total = subtotal + tax
total = Decimal(str(total)).quantize(Decimal('0.01'), rounding = ROUND_DOWN)

stringSubtotal = str(subtotal)
stringTotal = str(total)

print "Your subtotal comes to", "$" + stringSubtotal + ".", " With 9% sales tax, your total is $" + stringTotal + "."

print "Please enter cash amount:"
cash = Decimal(raw_input()).quantize(Decimal('0.01'))

change = cash - total
stringChange = str(change)

print "I owe you back", "$" + stringChange

print "Thank you for shopping with us!"

最佳答案

  1. 将产品字典称为“products”或一些类似的描述性名称,而不仅仅是“dictionary”
  2. 通常,如果您在一个范围内迭代,请使用 xrange 而不是 range 以获得更好的性能(尽管在这样的应用中这是一个非常小的挑剔)<
  3. 您可以使用 subtotal = sum(dictionary.itervalues()) 快速将所有商品价格相加,而无需使用循环。
  4. 您绝对应该自始至终使用 Decimal 以避免由于 float 而导致的不准确。
  5. 您可以使用格式字符串,例如 '%.2f' % value(旧式格式)或 '{:.2f}' .format(value) (新式格式)打印出带两位小数的值。
  6. 税值应该是一个常量,这样可以很容易地改变(它用在两个地方,一次用于计算,一次用于显示)。

关于Python,第一次使用 Decimal 和 quantize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14290300/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com