l****c 发帖数: 782 | 1 You are working at a grocery store and you are asked to track customers'
purchasing habits by scanning frequent shoppers cards. Your cash register
logs all transactions to a pipe--‐delimited ("|") flat text file in the
following format: customer_name|product_category|item_description|cost
An example log file is:
Pedro|groceries|apple|1.42
Nitin|tobacco|cigarettes|15.00
Susie|groceries|cereal|5.50
Susie|groceries|milk|4.75
Susie|tobacco|cigarettes|15.00
Susie|fuel|gasoline|44.90
Pedro|fuel|propane|9.60
All the items have a sales tax of 9.25%. Write a script/program (in your
language of choice) that will parse the log and generate the following
output:
1. A report of the total revenue from each customer
2. A report for each customer showing how much of their spending went to
each category.
3. Show the sales tax component for each of the reports.
With the above example log file, the script should output should look
something like:
Total revenue by customer:
Pedro - $11.02
Nitin - $15.00
Susie - $70.15
Purchases by Pedro:
groceries - $1.42
fuel - $9.60
Purchases by Nitin:
tobacco - $15.00
Purchases by Susie:
groceries - $10.25
fuel - $44.90
tobacco - $15.00 |
h********6 发帖数: 285 | |
l****c 发帖数: 782 | 3 是HR给我发的题,做了一道,这个不会。。。。
【在 h********6 的大作中提到】 : 电面?哪家?
|
d*s 发帖数: 699 | 4 这个似乎用不到什么数据结构,一个4 by N的数组就可以了
需要什么数据直接按相关行排序,输出结果比较容易扩展 |
h********6 发帖数: 285 | 5 好吧。。这个按要求写就行了。。
【在 l****c 的大作中提到】 : 是HR给我发的题,做了一道,这个不会。。。。
|
l****c 发帖数: 782 | 6 确实没有什么数据结构和算法的很高要求,但是想用C/C++写,写一般烦到写不出来了。
2个小时内做不出来,干脆就不做了。 |
r*******m 发帖数: 457 | |
l****c 发帖数: 782 | 8 我想这是第0轮吧,HR又不会听,干脆发个题做
【在 r*******m 的大作中提到】 : 居然还有这种形式面试的,发题做?
|
l*********8 发帖数: 4642 | 9 应该是用scripts做吧
【在 l****c 的大作中提到】 : You are working at a grocery store and you are asked to track customers' : purchasing habits by scanning frequent shoppers cards. Your cash register : logs all transactions to a pipe--‐delimited ("|") flat text file in the : following format: customer_name|product_category|item_description|cost : An example log file is: : Pedro|groceries|apple|1.42 : Nitin|tobacco|cigarettes|15.00 : Susie|groceries|cereal|5.50 : Susie|groceries|milk|4.75 : Susie|tobacco|cigarettes|15.00
|
l****c 发帖数: 782 | 10 是的,可是那玩意我一点都不懂啊,
大神,帮我做下吧?
【在 l*********8 的大作中提到】 : 应该是用scripts做吧
|
|
|
l*********8 发帖数: 4642 | 11 假如输入文件名叫做list.txt.
$ cat list.txt | awk -F | '{a[$1]; t[$1]+=$4}END{for(x in a){printf x;
printf " %.2f",t[x];printf"\n"}}'
输出:
Pedro 11.02
Susie 70.15
Nitin 15.00
【在 l****c 的大作中提到】 : 是的,可是那玩意我一点都不懂啊, : 大神,帮我做下吧?
|
l****c 发帖数: 782 | 12 对于script我懂0啊,这样发回去就行吗
【在 l*********8 的大作中提到】 : 假如输入文件名叫做list.txt. : $ cat list.txt | awk -F | '{a[$1]; t[$1]+=$4}END{for(x in a){printf x; : printf " %.2f",t[x];printf"\n"}}' : 输出: : Pedro 11.02 : Susie 70.15 : Nitin 15.00
|
l*********8 发帖数: 4642 | 13 程序还不全呢,这个只算了第一步
【在 l****c 的大作中提到】 : 对于script我懂0啊,这样发回去就行吗
|
l****c 发帖数: 782 | 14 囧
【在 l*********8 的大作中提到】 : 程序还不全呢,这个只算了第一步
|
l*********8 发帖数: 4642 | 15 完整的程序:
cat list.txt | awk -F \| \
'{a[$1]; b[$2]; t[$1]+=$4; c[$1,$2] += $4} \
END{ \
printf "Total revenue by customer:\n"; \
for(x in a) {\
printf x; \
printf " - $%.2f\n",t[x]; \
} \
for (x in a) {\
printf "\nPurchases by %s\n", x; \
for (y in b) { \
if (c[x,y] > 0) {\
printf y; \
printf " - $%.2f\n", c[x,y]; \
}\
}\
}\
}'
输出:
Total revenue by customer:
Pedro - $11.02
Susie - $70.15
Nitin - $15.00
Purchases by Pedro
fuel - $9.60
groceries - $1.42
Purchases by Susie
fuel - $44.90
groceries - $10.25
tobacco - $15.00
Purchases by Nitin
tobacco - $15.00
【在 l****c 的大作中提到】 : 囧
|
Z*****Z 发帖数: 723 | 16 longway V5!!偶像,膜拜!!
【在 l*********8 的大作中提到】 : 完整的程序: : cat list.txt | awk -F \| \ : '{a[$1]; b[$2]; t[$1]+=$4; c[$1,$2] += $4} \ : END{ \ : printf "Total revenue by customer:\n"; \ : for(x in a) {\ : printf x; \ : printf " - $%.2f\n",t[x]; \ : } \ : for (x in a) {\
|
l*********8 发帖数: 4642 | 17 我是在bash下运行的。
【在 l*********8 的大作中提到】 : 完整的程序: : cat list.txt | awk -F \| \ : '{a[$1]; b[$2]; t[$1]+=$4; c[$1,$2] += $4} \ : END{ \ : printf "Total revenue by customer:\n"; \ : for(x in a) {\ : printf x; \ : printf " - $%.2f\n",t[x]; \ : } \ : for (x in a) {\
|
l*********8 发帖数: 4642 | 18 不敢当。 你给我介绍个工作吧。。。
【在 Z*****Z 的大作中提到】 : longway V5!!偶像,膜拜!!
|
Z*****Z 发帖数: 723 | 19 No problem! 简历私信给我,立马发给我们HR,公司最近有了免费饭,生活质量大大滴
提高。。。
【在 l*********8 的大作中提到】 : 不敢当。 你给我介绍个工作吧。。。
|
f*****e 发帖数: 2992 | 20 学python,不仅可以写script,还能快速开发。
【在 l****c 的大作中提到】 : 对于script我懂0啊,这样发回去就行吗
|
|
|
r*******n 发帖数: 3020 | 21 log_file = """
Pedro|groceries|apple|1.42
Nitin|tobacco|cigarettes|15.00
Susie|groceries|cereal|5.50
Susie|groceries|milk|4.75
Susie|tobacco|cigarettes|15.00
Susie|fuel|gasoline|44.90
Pedro|fuel|propane|9.60
"""
# to build a dictionary table
dict_cart = {}
for each_line in log_file.split('\n')[1:-1]:
name, category, product, value = each_line.split('|')
if dict_cart.has_key(name):
if dict_cart[name].has_key(category):
dict_cart[name][category]+=float(value)
else:
dict_cart[name][category]=float(value)
else:
dict_cart[name]={category:float(value)}
# for question 1
for name in dict_cart.iterkeys():
invest_total = 0
for v in dict_cart[name].itervalues():
invest_total += v
print name, invest_total*tax
# for question 2
for name in dict_cart.iterkeys():
print name
for category,value in dict_cart[name].iteritems():
print category, value
【在 l****c 的大作中提到】 : You are working at a grocery store and you are asked to track customers' : purchasing habits by scanning frequent shoppers cards. Your cash register : logs all transactions to a pipe--‐delimited ("|") flat text file in the : following format: customer_name|product_category|item_description|cost : An example log file is: : Pedro|groceries|apple|1.42 : Nitin|tobacco|cigarettes|15.00 : Susie|groceries|cereal|5.50 : Susie|groceries|milk|4.75 : Susie|tobacco|cigarettes|15.00
|
l****c 发帖数: 782 | 22 谢谢大牛啊~我在想要不要发过去呢,毕竟这个自己完全不会啊。
【在 l*********8 的大作中提到】 : 完整的程序: : cat list.txt | awk -F \| \ : '{a[$1]; b[$2]; t[$1]+=$4; c[$1,$2] += $4} \ : END{ \ : printf "Total revenue by customer:\n"; \ : for(x in a) {\ : printf x; \ : printf " - $%.2f\n",t[x]; \ : } \ : for (x in a) {\
|
d********g 发帖数: 10550 | 23 用Python,10分钟即可搞定。不会Python的话花1小时学习然后10分钟搞定,总共只需
要70分钟
【在 l****c 的大作中提到】 : You are working at a grocery store and you are asked to track customers' : purchasing habits by scanning frequent shoppers cards. Your cash register : logs all transactions to a pipe--‐delimited ("|") flat text file in the : following format: customer_name|product_category|item_description|cost : An example log file is: : Pedro|groceries|apple|1.42 : Nitin|tobacco|cigarettes|15.00 : Susie|groceries|cereal|5.50 : Susie|groceries|milk|4.75 : Susie|tobacco|cigarettes|15.00
|
d********g 发帖数: 10550 | 24 最喜欢Python了
不过,有个方法最好改一下
if dict_cart.has_key(name):
改为
if name in dict_cart:
has_key()快要挂了
register
【在 r*******n 的大作中提到】 : log_file = """ : Pedro|groceries|apple|1.42 : Nitin|tobacco|cigarettes|15.00 : Susie|groceries|cereal|5.50 : Susie|groceries|milk|4.75 : Susie|tobacco|cigarettes|15.00 : Susie|fuel|gasoline|44.90 : Pedro|fuel|propane|9.60 : """ : # to build a dictionary table
|
d********g 发帖数: 10550 | 25 bash做题比较怪……
【在 l****c 的大作中提到】 : 谢谢大牛啊~我在想要不要发过去呢,毕竟这个自己完全不会啊。
|
l****c 发帖数: 782 | 26 都是牛啊~10分钟真的可以学会吗?
【在 d********g 的大作中提到】 : bash做题比较怪……
|
d********g 发帖数: 10550 | 27 10分钟肯定学不会,我是说10分钟做出来可以
runPython的答案就不错
【在 l****c 的大作中提到】 : 都是牛啊~10分钟真的可以学会吗?
|
r*******n 发帖数: 3020 | 28 thank you,
python zen里有说明 用 in 替代 has_key
最近在老在写Javascript,经常写hasOwnProperty,
所以惯性就一下写了个 has_key
【在 d********g 的大作中提到】 : 最喜欢Python了 : 不过,有个方法最好改一下 : if dict_cart.has_key(name): : 改为 : if name in dict_cart: : has_key()快要挂了 : : register
|
l****c 发帖数: 782 | 29 大牛,这个python好学吗?到哪里学呢?谢谢
【在 r*******n 的大作中提到】 : thank you, : python zen里有说明 用 in 替代 has_key : 最近在老在写Javascript,经常写hasOwnProperty, : 所以惯性就一下写了个 has_key
|
B*m 发帖数: 82 | |
|
|
H****r 发帖数: 2801 | 31 v5
★ 发自iPhone App: ChineseWeb - 中文网站浏览器
【在 l*********8 的大作中提到】 : 我是在bash下运行的。
|
H****r 发帖数: 2801 | 32 这个用C/C++应该也不难,python貌似恰当撒
★ 发自iPhone App: ChineseWeb - 中文网站浏览器
【在 l****c 的大作中提到】 : You are working at a grocery store and you are asked to track customers' : purchasing habits by scanning frequent shoppers cards. Your cash register : logs all transactions to a pipe--‐delimited ("|") flat text file in the : following format: customer_name|product_category|item_description|cost : An example log file is: : Pedro|groceries|apple|1.42 : Nitin|tobacco|cigarettes|15.00 : Susie|groceries|cereal|5.50 : Susie|groceries|milk|4.75 : Susie|tobacco|cigarettes|15.00
|
r*******n 发帖数: 3020 | |
l****c 发帖数: 782 | |