Есть файл с числами через запятую, без пробелов. Необходимо считать его и вывести в консоль отсортированный список по возрастанию и убиванию.
Вот мои попытки:
import re
try:
file_path = open(input('Введите путь к файлу: '))
except IOError:
print('File not found')
file_value = file_path.read()
file_numbers = re.findall('\d+', file_value)
# print(file_numbers)
# print(type(file_numbers))
sorted(file_numbers, key=int)
print(file_numbers)
sorted(file_numbers, key=int, reverse=True)
print(file_numbers)
Собственно результат:
['6', '2', '3', '13', '5', '1', '7', '9', '18', '20', '16', '12', '15', '14', '10', '11', '17', '9', '19']
['6', '2', '3', '13', '5', '1', '7', '9', '18', '20', '16', '12', '15', '14', '10', '11', '17', '9', '19']
В чем ошибка и как поправить? :(
Так же были попытки сделать вот так:
try:
file_path = open(input('Введите путь к файлу: '))
except IOError:
print('File not found')
file_value = file_path.read()
# file_numbers = re.findall('\d+', file_value)
file_numbers = []
for i in file_value:
try:
num = int(i)
file_numbers.append(num)
except ValueError:
continue
# print(file_numbers)
# print(type(file_numbers))
sorted(file_numbers, key=int)
print(file_numbers)
sorted(file_numbers, key=int, reverse=True)
print(file_numbers)
И на выходе получил вообще бред:
[6, 2, 3, 1, 3, 5, 1, 7, 9, 1, 8, 2, 0, 1, 6, 1, 2, 1, 5, 1, 4, 1, 0, 1, 1, 1, 7, 9, 1, 9]
[6, 2, 3, 1, 3, 5, 1, 7, 9, 1, 8, 2, 0, 1, 6, 1, 2, 1, 5, 1, 4, 1, 0, 1, 1, 1, 7, 9, 1, 9]
Ответ
И на выходе получил вообще бред:
Ваш код sorted(file_numbers, key=int) правильно был написан, но sorted возвращает новый отсортированный список, не изменяя исходный, поэтому вам нужно было сделать так:
file_numbers = sorted(file_numbers, key=int)
Можно отсортировать "на месте", как вы и хотели, но для этого нужно будет использовать sort
file_numbers.sort(key=int)
Комментариев нет:
Отправить комментарий