Python打印1到最大的n位数
要点是注意输入的n位数是否会导致溢出,因此利用字符串模拟整数的加法。注意:在打印函数中,需要判断打印的数字是否是以0开头的,同时判断条件是 num[i] != "0",不能写作 num[i] != 0,因为是使用str类型的,后面一种写法导致判断无法成功。
- '''
- 输入数字n, 按顺序打印从1最大的n位十进制数
- 比如输入3, 则打印出1、2、3、到最大的3位数即999
- '''
-
- def Print1ToMaxOfNDigits(n):
- if n <= 0:
- return
-
- number = ['0'] * n
- while not Increment(number):
- PrintNumber(number)
-
- def Increment(number):
- isOverflow = False
- nTakeOver = 0
- nLength = len(number)
-
- for i in range(nLength-1, -1, -1):
- nSum = int(number[i]) + nTakeOver
- if i == nLength - 1:
- nSum += 1
-
- if nSum >= 10:
- if i == 0:
- isOverflow = True
- else:
- nSum -= 10
- nTakeOver = 1
- number[i] = str(nSum)
- else:
- number[i] = str(nSum)
- break
-
- return isOverflow
-
- def PrintNumber(number):
- isBeginning0 = True
- nLength = len(number)
-
- for i in range(nLength):
- if isBeginning0 and number[i] != '0':
- isBeginning0 = False
- if not isBeginning0:
- print('%c' % number[i], end='')
- print('')
- #
- # Print1ToMaxOfNDigits(2)
-
- def Print1ToMaxOfNDigits2(n):
- if n <= 0:
- return
-
- number = ['0'] * n
- for i in range(10):
- number[0] = str(i)
- Print1ToMaxOfNDigitsRecursively(number, n, 0)
-
- def Print1ToMaxOfNDigitsRecursively(number, length, index):
- if index == length - 1:
- PrintNumber(number)
- return
- for i in range(10):
- number[index + 1] = str(i)
- Print1ToMaxOfNDigitsRecursively(number, length, index+1)
-
- Print1ToMaxOfNDigits2(2)
解压密码: detechn或detechn.com
免责声明
本站所有资源出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户自行鉴别,做一个有主见和判断力的用户。
本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。