【发布时间】:2015-08-01 14:51:27
【问题描述】:
我有一个包含以下格式数据的文件 discount.txt:
Less than $100 --> 0%
From $100 up to less than $500 --> 10%
From $500 up to less than $1,000 --> $40 PLUS 20%
From $1,000 up to less than $2,000 --> $140 PLUS 30%
$2,000 and above --> $440 PLUS 40%
表示销售额的折扣
Less than $100 0%
From $100 up to less than $500 10% for each dollar over $100
From $500 up to less than $1,000 $40 PLUS 20% of the total sale amount over $500
From $1,000 up to less than $2,000 $140 PLUS 30% of the total sale amount over $1,000
$2,000 and above $440 PLUS 40% of the total sale amount over $2,000
也就是说,如果总销售额为 100 美元,则折扣为 0 美元。但是,如果总销售额为 101 美元,则折扣为 0.10 美元。如果总销售额为 500 美元,则折扣为 40 美元,但如果总销售额为 501 美元,则折扣为 40.20 美元。
所以为了解决这个问题,我认为有4个列表:1个列表用于存储销售金额的下限,一个用于上限,一个用于保存与范围相对应的固定增量,一个用于保存额外折扣。如果没有固定增量,则假定为零。
然后对于给定的销售额,如果它在第 i 个范围内,那么只需执行以下操作:
fixedIncrement[i] + (saleAmount-lowerLimit[i])*additionDiscount[i]
但我面临的问题是解析给定的文本文件。有人可以帮助解析它并将其存储在 python 中的列表中
在给定的文件中,列表将是这样的:
lowerLimit[] = [1,100,500,1000,2000]
upperLimit[] = [100,500,1000,2000,MAX]
fixedIncrement[] = [0,0,40,140,440]
additionDiscount[] = [0,0.1,0.2,0.3,0.4]
【问题讨论】:
-
@PrerakSola 我解释了我的方法。我想知道除了我的想法之外是否还有更好的选择。我的代码有点乱。我已经提取了每一行并对其进行了解析。我希望有一些优雅的方式来做到这一点
-
您解释了您的计算方法。但是您提到的问题是关于解析文本文件。那么到目前为止,您尝试过什么来解析该文本文件?那其中的错误/非必需行为是什么?
-
@python_slayer 方法很可能是相同的:你取一行,正则表达式的值并将它们存储在列表中。然后从初始列表中每个列表的 i++ 元素创建新的列表列表。
-
@konart 为什么要列出列表?打算怎么做?
-
@python_slayer 因为每一行都可以被视为 2-3 个值的列表,并且您有 N 行。换句话说,您正在构建一个矩阵 A,然后将其转置为 A'。 “如何”是什么意思?
标签: python