0 / 0 / 0
Регистрация: 25.10.2019
Сообщений: 9
1

В файле записаны в столбик целые числа. Отсортировать их по возрастанию суммы цифр и записать в другой файл

25.10.2019, 13:10. Показов 32033. Ответов 19
Метки нет (Все метки)

В файле записаны в столбик целые числа. Отсортировать их по возрастанию суммы цифр и записать в другой файл.

Как? можно с пояснениями, пожалуйста.))))))))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.10.2019, 13:10
Ответы с готовыми решениями:

Отсортировать числа из файла по возрастанию суммы цифр и записать в другой файл
Помогите, пожалуйста В файле записано не более 100 чисел. Отсортировать их по возрастанию суммы...

В файле записаны целые числа. Найти максимальное и минимальное число и записать в другой файл
нужно сделать задачу в питоне

Отсортировать числа в файле по возрастанию последней цифры и записать в другой файл
В файле записаны в столбик целые числа. Отсортировать их по возрастанию последней цифры и записать...

В файле в столбик записаны целые числа
Помогите пожалуйста решить В файле в столбик записаны целые числа. Напишите программу, которая...

19
Эксперт Python
4606 / 2027 / 359
Регистрация: 17.03.2012
Сообщений: 10,085
Записей в блоге: 6
25.10.2019, 13:32 2
Пожалуйста.
1. Считать файл.
2.1. Отсортировать хоть как-нибудь.
2.2. Потом - по возрастанию суммы цифр.
3. Записать резуольтат в файл.

Каждый из пунктов является элементарным и легко гуглится.
0
Просто Лис
Эксперт Python
4911 / 3223 / 1004
Регистрация: 17.05.2012
Сообщений: 9,450
Записей в блоге: 9
25.10.2019, 14:23 3
2.1. Создать список с числами.
2.2. Написать функцию сортировки, которая будет считать сумму цифр в числе.
2.3. Отсортировать.
0
954 / 340 / 113
Регистрация: 04.08.2018
Сообщений: 2,534
25.10.2019, 15:20 4
Alexandra_20, пояснения к каждой задаче уровня седьмого класса - занимает много времени. Вашему вниманию представляю дядьку ГУГЕЛЬ! Он знает всё, в нём можно найти и перейти по ссылке к документации python!

Добавлено через 25 секунд
Alexandra_20, вы знаете, как открыть файл в python?

Добавлено через 53 минуты
Я конечно не старый скряга, но я не могу понять. Почему мне интересно подумать, придумать, написать (да как могу, да что-то не правильно, да в одну строку и с лямбдами я не могу), но я стараюсь, такие как - Alexandra_20, всё равно. Обидно же за поколение

Python
1
2
3
4
5
6
7
8
9
with open('input.txt') as t:
    nums = t.read().splitlines()
    hm =[]
    for i in list(sorted(nums)):
        ok = sum(map(int,i))
        hm.append(ok)
 
with open('output.txt', 'w') as w:
    print(sorted(hm), file=w)
2
Просто Лис
Эксперт Python
4911 / 3223 / 1004
Регистрация: 17.05.2012
Сообщений: 9,450
Записей в блоге: 9
25.10.2019, 15:41 5
Damenikx, только в файл нужно записать сами числа, а не сумму ))
0
954 / 340 / 113
Регистрация: 04.08.2018
Сообщений: 2,534
25.10.2019, 15:43 6
Рыжий Лис, да? Вот блинский )
0
Просто Лис
Эксперт Python
4911 / 3223 / 1004
Регистрация: 17.05.2012
Сообщений: 9,450
Записей в блоге: 9
25.10.2019, 15:54 7
Лучший ответ Сообщение было отмечено Alexandra_20 как решение

Решение

In Python 3, the cmp parameter was removed,
Блин. Должно быть как-то так:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
t = '''\
123
111
99'''
ls = t.split('\n')
print(ls)
 
def mycmp(x, y):
    print(x, y)
    return 0
 
ls2 = sorted(ls, cmp=mycmp)
print(ls2)
Добавлено через 3 минуты
Во!
Python
1
2
3
4
5
6
7
8
from functools import cmp_to_key
 
def mycmp(x, y):
    print(x, y)
    return 0
 
ls2 = sorted(ls, key=cmp_to_key(mycmp))
print(ls2)
Добавлено через 2 минуты
И с key, вроде, сортирует:
Python
1
2
3
4
5
6
7
def mykey(x):
    s = sum(map(int, x))
    print(x, 'sum =', s)
    return s
 
ls2 = sorted(ls, key=mykey)
print(ls2)
0
954 / 340 / 113
Регистрация: 04.08.2018
Сообщений: 2,534
25.10.2019, 15:55 8
Лучший ответ Сообщение было отмечено Alexandra_20 как решение

Решение

Эх, лямбды, тогда так:

Python
1
2
3
4
5
with open('input.txt') as t:
    a = t.read().splitlines()
    a.sort(key=lambda x: sum(map(int, x)), reverse=True)
with open('output.txt', 'w') as w:
    print(*a, file=w)
Добавлено через 27 секунд
Рыжий Лис, всё проще, когда есть лямбды
0
0 / 0 / 0
Регистрация: 25.10.2019
Сообщений: 9
25.10.2019, 17:34  [ТС] 9
Рыжий Лис, а есть более упрощённая запись?)
И не могли бы Вы, пожалуйста, пояснить, что и для чего для лучшего понимания.)
Спасибо.)
0
Просто Лис
Эксперт Python
4911 / 3223 / 1004
Регистрация: 17.05.2012
Сообщений: 9,450
Записей в блоге: 9
25.10.2019, 17:39 10
Лучший ответ Сообщение было отмечено Alexandra_20 как решение

Решение

ls = t.split('\n') - разбиваем прочитанный, получаем список строк.

Python
1
2
3
4
def mykey(x):
    s = sum(map(int, x))
    print(x, 'sum =', s)
    return s
Пишем функцию для сортировки. Где x - элемент списка. Функция считает сумму цифр и возвращает число, которое будет участвовать в сортировке.

ls2 = sorted(ls, key=mykey) - сортируем, получаем новый список.

Добавлено через 48 секунд
Функцию mykey() рекомендую выкинуть и написать свою реализацию.
0
0 / 0 / 0
Регистрация: 25.10.2019
Сообщений: 9
25.10.2019, 18:18  [ТС] 11
Рыжий Лис, программа не выполняется из-за ошибки. Я только пытаюсь разобраться в Python. Ничего не понимаю.
0
Просто Лис
Эксперт Python
4911 / 3223 / 1004
Регистрация: 17.05.2012
Сообщений: 9,450
Записей в блоге: 9
25.10.2019, 18:19 12
Выложите на форум ваш код и текст ошибки.
0
Welemir1
25.10.2019, 18:20
  #13

Не по теме:

Цитата Сообщение от Alexandra_20 Посмотреть сообщение
Ничего не понимаю.
это обычное дело, пока книгу в руки не возьмешь.

0
0 / 0 / 0
Регистрация: 25.10.2019
Сообщений: 9
25.10.2019, 18:25  [ТС] 14
Рыжий Лис, вот код:
Python
1
2
3
4
5
6
7
def cat(x):
    s = sum(map(int, x))
    print(x, 'sum =', s)
    return s
 
ls2 = sorted(ls, key=cat)
print(ls2)

Вот текст ошибки:

Traceback (most recent call last):
File "C:/Users/Админ/Desktop/Задание.py", line 6, in <module>
ls2 = sorted(ls, key=cat)
NameError: name 'ls' is not defined
0
Просто Лис
Эксперт Python
4911 / 3223 / 1004
Регистрация: 17.05.2012
Сообщений: 9,450
Записей в блоге: 9
25.10.2019, 18:27 15
Так файл нужно прочитать и заполнить переменную ls списком.

Добавлено через 1 минуту
*файл с числами.
0
0 / 0 / 0
Регистрация: 25.10.2019
Сообщений: 9
25.10.2019, 18:29  [ТС] 16
Рыжий Лис, это значит, что... (не поняла)
0
Просто Лис
Эксперт Python
4911 / 3223 / 1004
Регистрация: 17.05.2012
Сообщений: 9,450
Записей в блоге: 9
25.10.2019, 18:30 17
Python
1
2
3
4
with open('input.txt') as f:
    t = f.read()
print(t)
ls = ...
0
0 / 0 / 0
Регистрация: 25.10.2019
Сообщений: 9
25.10.2019, 18:42  [ТС] 18
Рыжий Лис, спасибо большое за помощь.)
Запуталась... Как полностью будет выглядеть код?
Я уже по-разному пробовала.

Добавлено через 2 минуты
Welemir1, читаю потихонечку.) Пытаюсь вникнуть.
0
36 / 21 / 9
Регистрация: 17.10.2019
Сообщений: 95
26.10.2019, 00:54 19
Python
1
2
3
4
5
6
7
8
9
10
11
filename =  
f = open(filename, "r")
ls =    f.read().splitlines()
f.close()
def cat(x):
    s = sum(map(int, x))
    print(x, 'sum =', s)
    return s
 
ls2 = sorted(ls, key=cat)
print(ls2)
0
4150 / 3073 / 1093
Регистрация: 21.03.2016
Сообщений: 7,727
26.10.2019, 21:11 20
PyDev, а записать в другой файл?
Python
1
2
3
4
5
def fun(line):
    return sum(map(int,line))
 
with open('input.txt') as f_in, open('out.txt','w') as f_out:
    f_out.write('\n'.join(sorted(f_in.read().splitlines(), key = fun)))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.10.2019, 21:11
Помогаю со студенческими работами здесь

В файле f записаны целые числа, в файл g записать положительные числа файла f, а в файл h - отрицательные
В файле f записаны целые числа. Написать программу, которая в файл g записывает положительные...

В текстовом файле f1 записаны целые числа, разделённые пробелами. Записать в текстовый файл f2 все положительные числа
В текстовом файле f1 записаны целые числа, разделённые пробелами. Записать в текстовый файл f2 все...

Отсортировать числа из файла и записать их в другой файл в столбик
Пользователь вводит имя файла, в котором в столбик записаны числа. Программа сортирует числа из...

Файл: Отсортировать массив по возрастанию суммы цифр и записать его в файл output.txt.
В файле input.txt записаны числа (в столбик), известно, что их не более 100. Отсортировать массив...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru