17-打印从1到最大的n位数
题目:输入数字n,按顺序打印从1到最大的n位十进制数。(大整数问题)
def print_max_n(n): res = [0 for i in range(n)] while not is_max(res): res=list_plus_1(res) print(res) def is_max(arrys): for arr in arrys: if arr != 9: return False return True # 返回加1后的列表 def list_plus_1(arr): length = len(arr) carry = 0 i=-1 while i>=-1*length: if i==-1: if arr[-1] + 1 < 10: arr[-1] = arr[-1] + 1 else: arr[-1] = arr[-1] + 1 - 10 carry = 1 else: if arr[i]+carry<10: arr[i] = arr[i]+carry carry=0 else: arr[i]=arr[i]+carry-10 carry=1 i-=1 return arr
注:
list_plus_1:用列表模拟字符串,该函数用来实现数值加1的操作,最后输出字符串时,只需要将列表拼接输出即可
is_max:用于判断该当前列表表示的数是否为要输出的最大数9999...999,如果达到最大,返回True
print_max_n:先调用is_max判断是否已达到最大数,如果没达到,调用list_plus_1,实现加1操作。如果要完善输出,可以在加一个函数,用来输出优化,将列表最前边的若干0不输出