def number_count(d,l,r):
if d<0 or d>9:
return None
if l>=r:
return None
splist=[]
for i in range(l,r+1):#将每个数字都拆分为单个字符串
splist+=list(str(i))#例如10会拆分为[‘1’,‘0’]
return splist.count(str(d))#直接统计d的个数即可
if __name__ == '__main__':
print(number_count(1,10,12))
def fun3(l1):
import math
def is_primer(n):#判断是否为质数
if n<2:
return False
for i in range(2,int(math.sqrt(n))+1):
if n%i==0:
return False
return True
#接下来按要求拆分
l2=[]
for digit in l1:
digit = str(digit)
l2+=digit[0]+digit[-1]
#将拆分完的列表中的数字转化为整型
l3=list(map(lambda x:int(x),l2))
#开始切分
#这是暴力解法,得两层for循环
# res = [] # 存放最终结果
# length = len(l3)
# flag = [0] * length # 标记已经扫描过的元素
# for i in range(length):
# notps = [] # 暂时存放非质数
#
# if is_prinmer(l3[i]) and falg == 0: # 质数
# res.append(l3[i]) # 直接将质数加入到最终列表即可
# flag[i] = 1
# elif not is_primer(l3[i]) and falsg == 0: # 非质数情况
# for j in range(i, length): # 去搜索后面还有没有非质数
# if flag[j] == 0 and not is_primer(l3[j]):
# notps.append(l3[j])
# flag[j] = 1
# else:
# break # 如果没有连续的质数就结束搜索
# if notps:
# notps = list(map(lambda x: str(x), notps)) # 转化成字符串
# notps1 = ''.join(notps)
# res.append(int(notps1))
# return res
#猴哥的一次遍历法
res=[]
str1=''
for i in l3:
if is_primer(i):#如果是质数
if str1!='':#如果str1不为空,说明str1保存着前面的非质数
res.append(int(str1))
res.append(i)
str=''
else:
str1+=str(i)#把非质数连接起来
if str1!='':#考虑到列表末尾全是非质数时还要再添加一次
res.append(int(str1))
if __name__ == '__main__':
l1=[1,234,5,6,7,890]
fun3(l1)
#至于为啥要用flag来记录,[2,4,4,5]中,for循环是会挨个遍历的。
#当遍历到第一个4,整个过程会将两个4合并,如果不标记,接下来for循环会接着遍历第二个4。