Найти - Пользователи
Полная версия: Помогите решить задачу
Начало » Центр помощи » Помогите решить задачу
1
zubargen
Считать единой строкой без пробелов набор целых чисел (28745623873465386), удалить все дубликаты, вывести отдельными операторами вывода в порядке возрастания и в порядке убывания в виде кортежей целых чисел (2, 3, 4, 5, 6, 7, 8) и (8, 7, 6, 5, 4, 3, 2).
Пример входных данных:
28745623873465386

Пример выходных данных:
(2, 3, 4, 5, 6, 7, 8)
(8, 7, 6, 5, 4, 3, 2)

Считать единой строкой? так:
 a = str(input())
FishHook
Хорошая задачка, спасибо!
PEHDOM
дубликаты убираются с помощью множеств
https://pythonworld.ru/tipy-dannyx-v-python/mnozhestva-set-i-frozenset.html
сортировка - с помощью sorted
https://tproger.ru/translations/python-sorting/
py.user.next
  
>>> def f():
...     s = input('number: ')
...     numbers_list = map(int, s)
...     numbers_uniq_list = list(set(numbers_list))
...     numbers_inc_tuple = tuple(sorted(numbers_uniq_list))
...     numbers_dec_tuple = tuple(sorted(numbers_uniq_list, reverse=True))
...     print(numbers_inc_tuple)
...     print(numbers_dec_tuple)
... 
>>> f()
number: 28745623873465386
(2, 3, 4, 5, 6, 7, 8)
(8, 7, 6, 5, 4, 3, 2)
>>> 
>>> f()
number: 123123456
(1, 2, 3, 4, 5, 6)
(6, 5, 4, 3, 2, 1)
>>>
zubargen
Правильно ли будет если я начну решать задачу так:
 a = str(input())

Хочу по-шагам разобраться в решении, а то после лекции каша в голове
zubargen
py.user.next
а можно с коментами, пояснениями, хочу понять
py.user.next
zubargen
Правильно ли будет если я начну решать задачу так:
input() и так возвращает str. Так что делать str для str не нужно.

zubargen
а можно с коментами, пояснениями, хочу понять
Спрашивай.

map() переводит символы цифр в цифры. Без этого сортировка будет идти по значениям символов цифр, а не по значениям цифр. В какой-то символьной таблице символы цифр могут идти по порядку, а в какой-то нет. Но главное не это. Главное, что со временем условие задачи может измениться и цифры могут превратиться в многозначные числа. И тогда 2 станет больше 100.
  
>>> '2 10 11 22 100'.split()
['2', '10', '11', '22', '100']
>>> sorted('2 10 11 22 100'.split())
['10', '100', '11', '2', '22']
>>>
С map() такой проблемы не будет
  
>>> '2 10 11 22 100'.split()
['2', '10', '11', '22', '100']
>>> sorted(map(int, '2 10 11 22 100'.split()))
[2, 10, 11, 22, 100]
>>>
потому что все числа после пропускания их через map() стали числами, а не строками из символов цифр. Соответственно, сортируются они как целые числа, а не как строки в виде наборов цифр.
zubargen
Тогда начну так:
 a = input().split()
sorted(map(int, 'a'.split()))
правильно будет?
и как теперь вывести правильно?
Пример выходных данных:
(2, 3, 4, 5, 6, 7, 8)
(8, 7, 6, 5, 4, 3, 2)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB