1. 前言
对于给定的正整数N(N最大为5位数),求其整数位数,及个位、十位、百位、千位和万位的值,同时,举个例子,如果N是一个三位数,那么,只求其个位、十位和百位。
2. 例子
2.1 输入一个一位数
请输入一个数:> 8
你输入的是一个一位数
8 的个位为: 8
2.2 输入一个两位数
请输入一个数:> 45
你输入的是一个两位数
45 的十位为: 4 ,个位为: 5
2.3 输入一个三位数
请输入一个数:> 45128
你输入的是一个五位数
45128 的万位为: 4 ,千位为: 5 ,百位为: 1 ,十位为: 2 ,个位为: 8
3. 代码实现
# %% 实现的功能
# 1. 判断输入的整数是几位数,最大可判断5位数
# 2. 求出每个位数上的值
# 请输入一个数
m = int(input("请输入一个数:"))
if 0 < m < 9: # 在c/c++中不支持这种写法
print("你输入的是一个一位数")
gw = m % 10
print(m, "的个位为:", gw)
elif 0 < m // 10 < 9:
print("你输入的是一个两位数")
gw = m % 10
sw = m // 10
print(m, "的十位为:", sw, ",个位为:", gw)
elif 0 < m // 100 < 9:
print("你输入的是一个三位数")
gw = m % 10
sw = m // 10 % 10
bw = m // 100
print(m, "的百位为:", bw, ",十位为:", sw, ",个位为:", gw)
elif 0 < m // 1000 < 9:
print("你输入的是一个四位数")
gw = m % 10
sw = m // 10 % 10
bw = m // 100 % 10
qw = m // 1000
print(m, "的千位为:", qw, ",百位为:", bw, ",十位为:", sw, ",个位为:", gw)
elif 0 < m // 10000 < 9:
print("你输入的是一个五位数")
gw = m % 10
sw = m // 10 % 10
bw = m // 100 % 10
qw = m // 1000 % 10
ww = m // 10000
print(m, "的万位为:", ww, ",千位为:", qw, ",百位为:", bw, ",十位为:", sw, ",个位为:", gw)
4. 代码解释
首先要判断输入的整数是几位数,我这里的思路是若该数在0~9之内,则为一位数;若该数整除10后结果在0~9之内,则为两位数;若该数整除100后结果在0~9之内,则为三位数;若该数整除100后结果在0~9之内,则为三位数;若该数整除1000后结果在0~9之内,则为四位数;若该数整除10000后结果在0~9之内,则为五位数;而Python整除的符号为//, 对应的代码如下:
if 0 < m < 9: # 判断一位数
elif 0 < m // 10 < 9: # 判断两位数
elif 0 < m // 100 < 9: # 判断三位数
elif 0 < m // 1000 < 9: # 判断四位数
elif 0 < m // 10000 < 9: # 判断五位数
其次要得到整数的各个位上的数,以输入45128为例,对应的个位十位百位千位万位的获取代码如下:
# m为输入的一个五位数,这里设为45128
gw = m % 10
sw = m // 10 % 10
bw = m // 100 % 10
qw = m // 1000 % 10
ww = m // 10000
如上所示, 用m对10取余,则可得个位,用m对10000取整,即可得到万位。再对中间三个位进行分析,中间位值求法有固定套路,都是先取整再取余,
1.比如说,想求十位上的值,则先对10取整,再对10取余;
想求百位上的值,则先对100取整,再对10取余;
想求千位上的值,则先对1000取整,再对10取余;
再举一个例子,假设输入的m为四位数,其值为2456,对于四位数而言,其中间只有十位和百位,所以:
1.想求十位上的值,则先对10取整,再对10取余;
2.想求百位上的值,则先对100取整,再对10取余;
对应代码如下:
sw = m // 10 % 10 # 十位
bw = m // 100 % 10 # 百位
6.总结,不管是五位数还是四位数还是多少位数,求其中间的位的值的规则都是类似的,先整除后取整。
5.总结
对于求一个整数有多少位数的问题,我所使用的方法还是算笨的,不适合进一步扩展,实际上可以将求位数的功能封装成一个函数,思路可以是将整数转为字符串再进行长度统计,具体的求法可参考以下链接。
python求数字位数的方法
|