题目:输入数字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)