#python #text-files
#python #текстовые файлы
Вопрос:
Извините, если этот вопрос довольно простой, я все еще изучаю Python.
Я пытаюсь создать программу, которая перебирает каждую строку в текстовом файле, умножает числа одной и той же строки вместе и присваивает произведение этих чисел переменной с именем product .
Например, если первая строка текстового файла читается как «1 2 3», программа получит произведение этих чисел (6) и присвоит его переменной с именем product1, и будет продолжать делать это для каждой строки в файле, присваивая отдельные переменные произведению каждогострока. Затем моя программа будет выводить произведение каждой строки.
Моя программа до сих пор: «‘ file = open(«яблоки», «r»)
for line in infile:
num = str(line)
num = num.split(' ')
num = int(num)
total = num
print(num)
»’
Num — это просто переменная-заполнитель.
Пример текстового документа:
1 2 3
3 2 5
2 2 2
Любая помощь будет оценена. Спасибо.
Ответ №1:
Ваша программа почти верна, только незначительные улучшения:
-
Полезно открыть файл с помощью контекстного менеджера:
with ...
-
В
num = str(line)
этом нет необходимости,line
это уже строка -
Вы должны пропускать пустые строки
-
Вычислите произведение строк с помощью другого цикла for
-
Сохраните продукт в списке, а затем распечатайте его
Пример:
all_products = []
with open('<your file.txt>', 'r') as f_in:
for line in f_in:
numbers = [*map(int, line.split())]
# skip empty lines:
if not numbers:
continue
product = 1
for n in numbers:
product *= n
all_products.append(product)
# print all products:
for line, product in enumerate(all_products, 1):
print('Line: {} Product: {}'.format(line, product))
С принтами:
Line: 1 Product: 6
Line: 2 Product: 30
Line: 3 Product: 8
Комментарии:
1. Спасибо! Это очень помогло.
Ответ №2:
from functools import reduce
file = open("apples", r)
products = {}
i = 1
for line in file:
product = reduce((lambda x, y: x * y), str(line).split(' '))
products['product{}'.format(i)] = product
i = 1
print(products)
Ответ №3:
def prod(line):
x=1
for n in num:
x = x * int(n)
return x
product = []
for line in infile:
num = line.split(' ')
product.append(prod(num))
print(product)
я думаю, это послужит вашей цели
Комментарии:
1. Спасибо за вашу помощь!