Как умножить числа на одной строке в текстовом файле с помощью Python?

#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:

Ваша программа почти верна, только незначительные улучшения:

  1. Полезно открыть файл с помощью контекстного менеджера: with ...

  2. В num = str(line) этом нет необходимости, line это уже строка

  3. Вы должны пропускать пустые строки

  4. Вычислите произведение строк с помощью другого цикла for

  5. Сохраните продукт в списке, а затем распечатайте его

Пример:

 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. Спасибо за вашу помощь!