Python
Python задача на программирование
В файле в столбик записаны числа. Отсортировать их по возрастанию суммы цифр и записать в другой файл. Используйте функцию, которая вычисляет сумму цифр числа.
Решается в три строки, без таскания списков туда-сюда, даже без лишних конвертаций в int.
def digitsum(strnum): return sum(map(int, iter(strnum.rstrip('\n').lstrip('-'))))
with open("in.txt", "r") as fin, open("out.txt", "w") as fout:
print(''.join(sorted(fin, key = digitsum)), file = fout)
Кладём рядом с программой файл in.txt с числами внутри: 324
-71
123
-8
100500
44
0
98
Запускаем, смотрим результат в out.txt.Для решения данной задачи мы можем использовать следующий алгоритм:
Создаем функцию sum_of_digits(), которая будет принимать на вход число и возвращать сумму его цифр.
Открываем файл с числами для чтения и читаем его содержимое в список numbers.
Создаем новый список numbers_with_sum_of_digits, в который будем добавлять кортежи из двух элементов: число и сумма его цифр.
Проходимся по каждому числу из списка numbers, вычисляем сумму его цифр с помощью функции sum_of_digits(), и добавляем кортеж (число, сумма цифр) в список numbers_with_sum_of_digits.
Сортируем список numbers_with_sum_of_digits по второму элементу (сумме цифр).
Открываем новый файл для записи и записываем каждое число из отсортированного списка numbers_with_sum_of_digits в столбик.
Ниже приведен код, реализующий описанный алгоритм:
Создаем функцию sum_of_digits(), которая будет принимать на вход число и возвращать сумму его цифр.
Открываем файл с числами для чтения и читаем его содержимое в список numbers.
Создаем новый список numbers_with_sum_of_digits, в который будем добавлять кортежи из двух элементов: число и сумма его цифр.
Проходимся по каждому числу из списка numbers, вычисляем сумму его цифр с помощью функции sum_of_digits(), и добавляем кортеж (число, сумма цифр) в список numbers_with_sum_of_digits.
Сортируем список numbers_with_sum_of_digits по второму элементу (сумме цифр).
Открываем новый файл для записи и записываем каждое число из отсортированного списка numbers_with_sum_of_digits в столбик.
Ниже приведен код, реализующий описанный алгоритм:
def sum_of_digits(number):
return sum(int(digit) for digit in str(number))
with open('input.txt', 'r') as input_file:
numbers = [int(line.strip()) for line in input_file]
numbers_with_sum_of_digits = []
for number in numbers:
numbers_with_sum_of_digits.append((number, sum_of_digits(number)))
numbers_with_sum_of_digits.sort(key=lambda x: x[1])
with open('output.txt', 'w') as output_file:
for number, _ in numbers_with_sum_of_digits:
output_file.write(str(number) + '\n')
В этом примере мы использовали функцию lambda x: x[1] для сортировки списка numbers_with_sum_of_digits по второму элементу кортежа. Эта функция принимает на вход кортеж и возвращает его второй элемент.Похожие вопросы
- Помогите с задачей по программированию - Python
- Задача по программированию, Python
- Задача на Python. Одномерное динамическое программирование
- Как научиться понимать и решать поставленные задачи в программирование?
- Решение задачи по программированию (желательно питон) Сложность O(квадрат(n))
- Задача по программированию. Помогите пожалуйста)) Скидывайте, пожалуйста, на любых языках, я все пойму!
- Python задача линейной регрессии
- Python сложный язык программирования?
- Задача по программированию
- Помогите пожалуйста решить задачу по программированию наpython.