获得意外的无限while循环

时间:2020-05-09 10:39:39

标签: python while-loop

给出一个整数。任务是删除一些数字并重新排列数字(如有必要),以使所得的整数成为可以被3整除的最大可能整数。

我的算法是:

  1. 如果数字本身可以被3整除,则只需按降序打印数字即可。

  2. 如果数字是1模3,则删除整数中也是1模3的最小位数,然后按降序打印数字。如果没有这样的数字,则删除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的代码部分。我只是检查案例2中的n=223

我还不是高级编码器,所以最好进行一些优化(如果可能):)

谢谢。

0 个答案:

没有答案