使用python

时间:2015-10-29 22:00:57

标签: python function parsing python-3.x matrix

一家巧克力公司决定对当前日期前30天生产的糖果产品提供折扣。我必须有一个矩阵作为打印结果,其中程序读取2个文件,一个是不同大小的不同糖果的成本,另一个是提供折扣的阈值天数。 所以基本上,在数字小于30(这是来自days.txt的输入)的任何地方,它应该打印一个"$"符号,并且它在任何地方都超过数字(在我们的例子中是30)它应该只打印它们的空格地点。我们也有一个异常,我们在candies.txt矩阵中有英文字母,因为我们正在寻找数字来检查价格而不是字母,所以它应该在它们的位置打印"?"符号,因为它不是认可。

这是我想要做的。

candy = []
with open('demo.txt', 'r') as f:
    for line in f:
        line = line.strip()
    if len(line) > 0:
        candy.append(map(int, line.split()))
print(candy, end='')

parsedList=[]
with open("demo.txt","r") as f:
    lst=f.read().splitlines()
    for i in lst:
        parsedList.append(i.split())
with open("days.txt","r") as f:
    param = int(f.readline().split("=")[1])

for innerList in parsedList:
    for element in innerList:
        if element.isdigit():
            if int(element)>=param:
                print (" ", end='')
            else:
                print( "$", end='')
        else:
            print ("?", end='')
    print(string, end='')

我的问题是我正在尝试打印文件demo.txt然后让python以矩阵形式打印带有替换值的输出。我的值是打印但它们不在矩阵中,也不打印第一个文本文件。

1 个答案:

答案 0 :(得分:1)

def repl(ch,threshold):
    if ch.isdigit():
        if int(ch) < threshold:
            return '$'
        elif int(ch)> threshold:
            return " "
        else:
            return ch
    else:
        return '?'
lines = []
with open('data') as f, open("data.txt","r") as f2:
    threshold = int(f2.read().split('=')[-1])
    for line in f:
        line = line.strip()
        line = line.split()
        line = [repl(ch,threshold) for ch in line]
        lines.append(line)
    # reset to start of demo.txt
    f.seek(0)
    for line in f:
        print(line)

for line in lines:
    print()
    for el in line:
        print(el,end=" ")

31 32 19 11 15 30 35 37

12 34 39 45 66 78 12 7

76 32 8 2 3 5 18 32 48

99 102 3 46 88 22 25 21

fd zz er 23 44 56 77 99

44 33 22 55 er ee df 22

    $ $ $ 30     
$           $ $ 
    $ $ $ $ $     
    $     $ $ $ 
? ? ? $         
    $   ? ? ? $