1.找位数
2,看是从后面还是从前面找1

# -*- coding:utf-8 -*-
class Solution:
    def NumberOf1Between1AndN_Solution(self, n):
        # write code here
        result = 0
        for i in range(1, n+1):
            i_tmp=i     #给个临时i,其实没啥用
            shang= 0    #重新赋值,以免下次循环出错
            yu_shu= 0    #重新赋值,以免下次循环出错



            #求n的位数,其实就是每次除以10,看能除几次
            tmp = i_tmp//10   ##地板除
            max_10 = 0  #重新赋值,以免下次循环出错
            max_10 += 1   #如果i是个位数,直接得出i的位数.如果不是,则在下面的while中重新赋值
            while tmp:   #当i/tmp的十位上不为0时循环
                max_10 += 1  #i是几位数,max_10就是几
                tmp = tmp//10


            while max_10: #max_10是几,i就是几位数,就循环几次
                shang=i_tmp//(10**(max_10-1))
                yu_shu =i_tmp%(10**(max_10-1))
                i_tmp=yu_shu
                max_10 -= 1
                if shang == 1:
                    result +=1
        return result

i_tmp=11...........商....余数
11/10 ............... 1......1..........余数给i_tmp
1/1 ....................1......0..........循环结束