Python实现给一个不多于5位的正整数,求它是几位数,逆序打印这个数字

一、简单版(只实现这两个需求)

num=input('你好呀,请输入一个不多于五位的正整数>>>')
print('嗯,我看过了,这是一个'+str(len(num))+'位数。')
#len函数可以查看字符串的长度,也就是能得出这是一个几位数,用str转换成字符串之后才能跟前后文字拼接
print('我把它倒过来给你看看:',''.join(list(reversed(num))))
#reversed函数把原数字反转过来,返回的结果是迭代器
#用list函数把迭代器变成列表
#用join方法连接list里的所有元素,得到列表,用于连接的字符是什么也没有,所以就会无缝拼接

但是有一些数字翻转过来跟原来是一样的,比如8,88,858,8558,85658,所以下面的升级版会把这些无聊的翻转考虑进去,让程序更智能一点,更,em,可爱一点……

二、升级版

num=input('你好呀!请输入一个不多于五位的正整数:')
print('嗯,我看过了。它是一个'+str(len(num))+'位数。')
if (len(num)==1) or (len(num)<=3 and num[0]==num[-1]) or (num[0]==num[-1] and num[1]==num[-2]):
#这里提出了三种懒得反转的情况,分别是只有一位数,比如8
#两位或者三位数,第一个数字和最后一个数字相同,比如88,858
#四位或者五位数,第一个数字和最后一个数字相同,第二个数字和倒数第二个数字相同,比如8558,85658

    print('我本来想把它倒过来给你看看,但是它倒着写不好玩儿,算了吧~')
else:
    print('我把它倒过来了,现在它变成了',''.join(list(reversed(num)))) 

三、自己造轮子(关注算法的请看)

num=input('请输入一个不超过5位的正整数>>>')
num=int(num)
#变量res用于存储逆转之后的数字
res=0
#变量count用于存储数字位数
count=0
#下面是这个算法的核心
while num !=0:
    #用取余数的方式取出当前的个位数字,
    # 把结果中原来已有的部分乘以10,加上刚取出来的个位数字。
    #这就相当于把原来的部分往前挪了一下,给新来的个位数腾出来一个地方
    res=res*10+num%10
    #用除以10并向下取整的方式把已经处理过的数位去掉
    num//=10
    #每处理一次,就给计数器count加1,用这样的方式计算num是几位数
    count+=1

print(f'这是一个{count}位数,它的逆序数字是{res:0>{count}}')

为了帮助大家更好地理解上述算法的核心,请看下面的图解:

如果这篇博文帮到了你,就请给我点个吧(#^.^#)


有疑问也欢迎留言~博主可nice啦,在线秒回ヾ(◍°∇°◍)ノ゙

  • 59
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值