码迷,mamicode.com
首页 > 其他好文 > 详细

打印从1到最大的n

时间:2018-05-08 14:31:31      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:self   must   git   结束   and   +=   进制   err   条件   

题目:输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数999

需考虑大数问题

#-*-coding:utf-8-*-

class print_N:
    def __init__(self,n):
         assert n >= 1, Input error:n must >= 1
         self.data = [0] * n
         self.print_number()
         
    def print_number(self):
       
        while self.Increment():
            i = 0
            while self.data[i] == 0:
                i += 1
            print ‘‘.join(self.data[i:])
    
    def Increment(self):
        
        length = len(self.data)
        index = length - 1
        digit = int(self.data[index])
        digit += 1
        if digit == 10:  # 满10进1
            flag = True
            while flag and index > 0:
                self.data[index] = 0
                index -= 1
                tmp = int(self.data[index]) + 1
                if tmp < 10:
                    flag = False
                    self.data[index] = str(tmp)
            if flag and index == 0:  # 当到达第一个位置时,如果符合满十进一的条件,则结束循环
                return False
        else:
            self.data[index] = str(digit)
        
        return True
if __name__ == __main__:
    p = print_N(0)
    p = print_N(2)
    p = print_N(5) 
    
     
    
        
 
        
        

 

打印从1到最大的n

标签:self   must   git   结束   and   +=   进制   err   条件   

原文地址:https://www.cnblogs.com/guozw/p/9007366.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!