第十四届蓝桥杯pythonB组真题——2023
例如20322175、33220022都完全不包含2023,而20230415,20193213则含有2023(后者取第1,2,6,8个数位)>>> print(info.find('a'))# 从下标0开始,查找在字符串里第一个出现的子串,返回结果:0。>>> print(info.find('a', 1))# 从下标1开始,查找在字符串里第一个出现的子串:返回结果3。>>>print(info
问题描述:
请求出在 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.蓝桥杯真题题解——来一瓶养乐多
更多推荐
所有评论(0)