一家巧克力公司决定对当前日期前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以矩阵形式打印带有替换值的输出。我的值是打印但它们不在矩阵中,也不打印第一个文本文件。
答案 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
$ $ $
$ $ $ $ $
$ $ $ $
? ? ? $
$ ? ? ? $