Уведомления

Группа в Telegram: @pythonsu

#1 Март 3, 2021 11:37:15

zubargen
Зарегистрирован: 2021-03-02
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите решить задачу

Считать единой строкой без пробелов набор целых чисел (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())

Отредактировано zubargen (Март 3, 2021 13:49:27)

Офлайн

#2 Март 3, 2021 12:34:15

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите решить задачу

Хорошая задачка, спасибо!



Офлайн

#3 Март 3, 2021 12:34:49

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Помогите решить задачу

дубликаты убираются с помощью множеств
https://pythonworld.ru/tipy-dannyx-v-python/mnozhestva-set-i-frozenset.html
сортировка - с помощью sorted
https://tproger.ru/translations/python-sorting/



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#4 Март 3, 2021 13:15:13

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

Помогите решить задачу

  
>>> 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)
>>>



Отредактировано py.user.next (Март 3, 2021 13:17:27)

Офлайн

#5 Март 3, 2021 14:31:55

zubargen
Зарегистрирован: 2021-03-02
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите решить задачу

Правильно ли будет если я начну решать задачу так:

 a = str(input())

Хочу по-шагам разобраться в решении, а то после лекции каша в голове

Офлайн

#6 Март 3, 2021 14:52:24

zubargen
Зарегистрирован: 2021-03-02
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите решить задачу

py.user.next
а можно с коментами, пояснениями, хочу понять

Офлайн

#7 Март 3, 2021 15:34:11

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

Помогите решить задачу

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() стали числами, а не строками из символов цифр. Соответственно, сортируются они как целые числа, а не как строки в виде наборов цифр.



Отредактировано py.user.next (Март 3, 2021 15:38:54)

Офлайн

#8 Март 4, 2021 11:27:48

zubargen
Зарегистрирован: 2021-03-02
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите решить задачу

Тогда начну так:

 a = input().split()
sorted(map(int, 'a'.split()))
правильно будет?
и как теперь вывести правильно?
Пример выходных данных:
(2, 3, 4, 5, 6, 7, 8)
(8, 7, 6, 5, 4, 3, 2)

Отредактировано zubargen (Март 4, 2021 11:34:40)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version