Кондитерская компания решила предложить скидку на конфетные продукты, которые производятся за 30 дней до текущей даты. Я должен иметь матрицу в качестве результата печати, где программа читает через 2 файла, одна из которых является стоимостью разных конфет разных размеров, а другая является пороговым числом дней, после которых предлагается скидка. Так что в этом вопросе две текстовые файлы выглядеть как этотРазбор двух текстовых файлов в Python для комбинированного результата
candies.txt
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
и второй файл days.txt
30
Но он может иметь более чем один номер. Это может выглядеть как
30
40
36
Нужный выход
Discount at days = 30
$ $ $
$ $ $
$ $ $ $ $
$ $ $ $
? ? ? $
$ ? ? ? $
Discount at days = 40
And then execute the output accordingly
Так в основном, везде число под номером данного в days.txt он должен напечатать "$"
знак и везде, где это больше, чем номер (30 в нашем случае), он должен просто печатать места на своем месте. У нас также есть аномально, где у нас есть английские алфавиты в матрице candies.txt, и поскольку мы ищем номера для проверки цены, а не буквы, она должна печатать знак "?"
на своем месте, поскольку он не распознается.
Вот мой код
def replace(word, threshold):
try:
value = int(word)
except ValueError:
return '?'
if value < threshold:
return '$'
if value > threshold:
return ' '
return word
def get_threshold(filename):
thresholds = []
with open(filename) as fobj:
for line in fobj:
if line.strip():
thresholds.append(int(line))
return thresholds
def process_file(data_file, threshold):
lines = []
print('Original data:')
with open(data_file) as f:
for line in f:
line = line.strip()
print(line)
replaced_line = ' '.join(
replace(chunck, threshold) for chunck in line.split())
lines.append(replaced_line)
print('\nData replaced with threshold', threshold)
for threshold in get_threshold('days.txt'):
process_file('demo.txt', threshold)
Мой вопрос заключается в том, что мой код работает, когда есть только один номер во втором файле, days.txt, но он не работает, когда есть больше чем один номер в второй файл. Я хочу, чтобы он работал, когда в каждой новой строке второго текстового файла есть несколько номеров. Я не знаю, что я делаю неправильно.
Что произойдет, когда вы попробуете его с несколькими номерами во втором файле? – ppperry
Я получаю сообщение об ошибке 'line = int (строка) ValueError: недействительный литерал для int() с базой 10: '104 \ n88 \ n99 \ n9988''' –
Что вы хотите, если в нескольких второй файл? Создает ли он последовательность для каждого номера? Или он выбирает наивысший? Или что? – ballsatballsdotballs