сортировка списка с первым не ноль
Нужна сортировка списка 4 чисел так, чтобы исключить первое число, если есть ноль. Например 4251 получить 1245. А если 2001 то получить 1002, а не 0012. Пока так получилось
abcd = int(input())
a = []
a.append(abcd // 1000)
a.append((abcd % 1000) // 100)
a.append((abcd % 100) // 10)
a.append(abcd % 10)
print(*sorted(a), sep='')
Ответы (3 шт):
Автор решения: gil9red
→ Ссылка
Накидал такой алгоритм:
- Получаем число как строку
- Собираем список символов-цифр, исключая 0 и сортируем
- Подсчитываем количество нулей
- Если нулей были, то вставляем их после второй цифры
Пример:
abcd = input()
digits = sorted(c for c in abcd if c != '0')
zeros = len(abcd) - len(digits)
if zeros:
digits.insert(1, '0' * zeros)
print(*digits, sep='')
Автор решения: CrazyElf
→ Ссылка
Я так до конца и не понял задачу, но если нужно, например, оставить нули на своих местах, а остальные цифры отсортировать, то будет примерно так:
a = list(input())
b = [x for x in a if x != '0']
b.sort()
j = 0
for i, x in enumerate(a):
if x != '0':
a[i] = b[j]
j += 1
print(*a, sep='')
Автор решения: GrAnd
→ Ссылка
- Сортируем цифры как строку (слева оказываются нули если они были)
- Переводим в int (обрезаются нули слева) и обратно в str.
- Берём левую цифру и к ней приклеиваем оставшиеся предварительно дополнив их нулями слева (если надо)
a = 2001
s = str(int("".join(sorted(str(a)))))
b = int(s[0] + s[1:].zfill(3))
print(b)