Получение непреднамеренного бесконечного цикла while - PullRequest
0 голосов
/ 09 мая 2020

Дано целое число. Задача состоит в том, чтобы удалить некоторые цифры и переупорядочить цифры (если необходимо), чтобы полученное целое число было максимально возможным целым числом, которое делится на 3.

Мой алгоритм:

  1. Если само число делится на 3, просто выведите цифры в порядке убывания.

  2. Если число 1 по модулю 3, удалите одно наименьшее di git в целом числе, которое также равно 1 по модулю 3, тогда просто выведите цифры в порядке убывания. Если такого di git нет, удалите две наименьшие цифры, которые равны 2 по модулю 3, а затем просто распечатайте цифры в порядке убывания.

  3. Если число 2 по модулю 3, то аналогичные в случае 2 выше.

n = 223
s = str(n)

if n % 3 == 0:
    n = "".join(sorted(str(n), reverse=True))

if n % 3 == 1:
    n = "".join(sorted(str(n)))
    count = 0
    for char in s:
        if int(char) % 3 == 1:
            s = s.replace(char, '', 1)
            count+=1
    if count != 0:
        n = "".join(sorted(s, reverse=True))
        print(n)
    else:
        count2 = 0
        while count2 <= 2:
            print('l')
            for char in s:
                if int(char) % 3 == 2:
                    s = s.replace(char, '', 1)
                    count2+=1
        n = "".join(sorted(s, reverse=True))
        print(n)       

Обратите внимание, что я не написал часть кода для случая 3. Я просто проверял n=223, что является в случае 2.

Я еще не являюсь продвинутым кодировщиком, поэтому некоторая оптимизация (если возможно) будет очень признательна :)

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...