Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите пожалуйста с задачей на Python

тро Профи (531), закрыт 4 часа назад
Дано шестизначное натуральное число N, в записи которого нет повторяющихся цифр. Напишите программу, определяющую 3 наибольших цифры данного числа.
Задано единственное число N.
Необходимо вывести 3 наибольших цифры данного числа через пробел в порядке убывания.
Дополнен 9 часов назад
В чем ошибка
a=int(input())
m=0
n=0
k=0
while a>0:
a1=a%10
if a1>m:
n=m
k=n
m=max(a1,m)
elif a1<m and a1>=n:
k=n
n=max(n,a1)
elif a1<m and a1<n and a1>=k:
k=max(k,a1)
print(m,n,k)
a=a//10
print(m,n,k)
Лучший ответ
resurce Гуру (4143) 8 часов назад
 n = input() 
digits = sorted([int(d) for d in n], reverse=True)
print(*digits[:3])
троПрофи (531) 8 часов назад
мне нужно решение через цикл while
resurce Гуру (4143) тро, Тогда:
 a = int(input()) 
original_a = a
 
digits = [] 
while a > 0: 
    digits.append(a % 10) 
    a //= 10 
 
digits.sort(reverse=True) 
print(*digits[:3])  
троПрофи (531) 7 часов назад
Спасибо, ваша программа работает, но мне нужно более простыми, но большими циклами, но у меня не работает, может увидите где ошибка:
a=int(input())
m=0
n=0
k=0
while a>0:
a1=a%10
if a1>m:
n=m
k=n
m=max(a1,m)
elif a1<m and a1>=n:
k=n
n=max(n,a1)
elif a1<m and a1<n and a1>=k:
k=max(k,a1)
print(m,n,k)
a=a//10
print(m,n,k)
resurce Гуру (4143) тро,
 a = int(input()) 
m = -1  # Исправлено 
n = -1  # Исправлено 
k = -1  # Исправлено 
 
while a > 0: 
    a1 = a % 10 
    if a1 > m: 
        k = n 
        n = m 
        m = a1 
    elif a1 < m and a1 >= n: 
        k = n 
        n = a1 
    elif a1 < m and a1 < n and a1 >= k: 
        k = a1 
    a = a // 10 
 
print(m, n, k) 
троПрофи (531) 4 часа назад
Всё получилось! Большущее спасибо от меня и от дочери. Всего хорошего Вам и вашим родным!!!
Остальные ответы
Celtic Hammer Мудрец (16171) 10 часов назад
n = 573901
print(*sorted(list(str(n)))[::-1][:3])
троПрофи (531) 10 часов назад
"я так пишу, но ответ не получается"
a=int(input())
m=0
n=0
k=0
while a>0:
a1=a%10
if a1>m:
n=m
k=n
m=max(a1,m)
elif a1<m and a1>=n:
k=n
n=max(n,a1)
elif a1<m and a1<n and a1>=k:
k=max(k,a1)
print(m,n,k)
a=a//10
print(m,n,k)
Celtic Hammer Мудрец (16171) Так и не надо так писать. Как видишь задача решается одной строчкой
PS Мудрец (17666) 9 часов назад
берешь стрингом, сортируешь и выводишь три первых.
ну или как даун через циклы и массивы, если совсем безмозглый.
троПрофи (531) 9 часов назад
к сожалению нет массивов пока
тро Профи (531) тро, и стрингом никак
троПрофи (531) 9 часов назад
покажи как дауны делают через циклы )
больше не чат гпт ???? Мыслитель (7924) 5 часов назад
Ну допустим, если тебе надо через циклы решить. У тебя объявление переменных идёт немного в неправильном порядке.

исправленный:

 
a = int(input())

m = 0
n = 0
k = 0

while a > 0:
a1 = a % 10

if a1 > m:
k = n
n = m
m = a1
elif a1 > n:
k = n
n = a1
elif a1 > k:
k = a1

a = a // 10

print(m, n, k)
троПрофи (531) 4 часа назад
Спасибо! Всё так!
троПрофи (531) 4 часа назад
Ваш ответ тоже лучший!!! :))
больше не чат гпт ???? Мыслитель (7924) тро, спс
Похожие вопросы