一道初学者题帮我看看哪里错了

不会吧不会吧,一道初学者的题目我都没AC,说出去怕被笑死,麻烦各位帮我看下哪里的思路有问题?

img

su = int(input())
for i in range(100,1000):
    
    g = i % 10
    s = i // 10 % 10
    b = i // 100
    
    suit1 = 2 * (g+s+b) 
    suit2 = 2 * (s+b) + g

    if suit1 == su:
        i = str(i)
        print(i+i[::-1])
        
    elif suit2 == su:
        i = str(i)
        print(i+i[::-1][1:])

稍微看了一下别人怎么写的,他们是列举一万到十万之间的数来一一比较,感觉这样效率太低了

1.i是个int,不是str,你对int切片?先转str再切片
2.按从小到大的顺序输出,那么肯定是先输出所有5位的,再输出6位的
你这是穿插着输出的,肯定不对呀

s = [int(i) for i in range(100,1000) if str(i) == str(i)[::-1]]
print(s)
1个列表推导式就好了