问题描述:

     请求出在 12345678(含)至98765432(含)中,有多少个数中完全不包含2023。完全不包含2023是指无论将这个数的哪些数位移除都不能得到2023。例如20322175、33220022都完全不包含2023,而20230415,20193213则含有2023(后者取第1,2,6,8个数位)

关键是认识 find函数。

       find函数用于判断字符串是否含有子串str:

               若包含子串,则返回所在字符串第一个位置的下标

               若不包含子串,返回-1

       语法:str.find(str, beg=0, end=len(string))

               str : 指定检索的字符串(子串)

               beg :开始索引,默认为0。

               end :结束索引,默认为字符串的长度。

       举例:

              >>>info = 'abca'
              >>> print(info.find('a'))      # 从下标0开始,查找在字符串里第一个出现的子串,返回结果:0
              >>> print(info.find('a', 1))   # 从下标1开始,查找在字符串里第一个出现的子串:返回结果3

              >>> print(info.find('3'))      # 查找不到返回-1
              >>>print(info.find('abcac'))   # 子串比原字符串长,返回-1
 

完整代码如下:

def find_i(i):
    find_1 = i.find('2')
    if find_1 == -1:
        return 0

    find_2 = i.find('0',find_1+1)
    if find_2 == -1:
        return 0

    find_3 = i.find('2',find_2+1)
    if find_3 == -1:
        return 0

    find_4 = i.find('3',find_3+1)
    if find_4 == -1:
        return 0
    
    return 1

ans = 0
for i in range(12345678,98765432+1):
    if find_i(str(i)) == 0:
        ans += 1

print(ans)

参考:1.Python中的find()函数_python find-CSDN博客 2.蓝桥杯真题题解——来一瓶养乐多

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐