1、给一个正整数,要求判断其位数,并且将该数的每一位数打印出来,分别按从为数从小到大和从大到小进行打印
分析:
例如一个正整数为:46127,该数为一个5位数的整数,我们想要的结果为7,2,1,6,4和4,6,1,2,7
如何获得每一位上的数?我们可以通过结合数学上的求商和求余数来解决,例如,我们发现规律:
- 第一步:46127 % 10 = 7,46127 // 10 = 4612
- 第二步:4612 % 10 = 2,4612 // 10 = 461
- 第三步:461 % 10 = 1,461 // 10 = 46
- 第四步:46 % 10 = 6,46 // 10 = 4
- 第五步:4 % 10 = 4,4 // 10 = 0
通过以上我们发现,我们将任意的整数与10做求模运算,便可以求出个位上的数,以此类推,我们只需要将求出的个位数去掉,转换为比之前的位数少一位的,然后再次对转换后的数进行再次与10的求模运算,依次执行此过程,便可求出我们所要的结果。
实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | num = int(input('pls enter your number: ')) if num >= 1000: if num >= 10000: count = 5 else: count = 4 elif num >= 10: if num >= 1000: count = 3 else: count = 2 else: count = 1 # % 求模运算,也就是求余数 # // 求商运算 # num = 46127 while num != 0: # num != 0 a = num % 10 # a = 7 num //= 10 # b = 4612 print(a) num = int(46127) for i in range(count): # num = 46127 count = 5 目的是为了计数用 n = num // 10 # 对46127求商,n = 4612 print(num - n * 10) # 46127 - 4612 * 10 = 7 num = n num = int(46127) for i in range(count): print(num % 10) num //= 10 # num = 46127 // 10, num = 4612 |
---|
按从大到小依次打印的分析:
1 2 3 4 5 6 | 46127 // 10000 = 4,46127 % 10000 = 6127,10000 // 10 = 1000 6127 // 1000 = 6,6127 % 1000 = 127,1000 // 10 = 100 127 // 100 = 1,127 % 100 = 27,100 // 10 = 10 27 // 10 = 2,27 % 10 = 7,10 // 10 = 1 7 // 1 = 7,7 % 1 = 0,1 // 10 = 0 这里关键的地方是如何设定10000、1000、100、10、1等数,还有就是这个数是如何来的 |
---|
实例:
1 2 3 4 | num = int(46127) for i in range(count,0,-1): print(num // 10 ** (i - 1)) # 46127 // 10 ** (5 - 1) = 4, num = 46127 num = num % 10 ** (i - 1) |
---|