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=int(num/10)8
    #每处理一次,就给计数器count加1,用这样的方式计算num是几位数
    count+=1
print('这是一个%s位数,它的逆序数字是%s'%(count,res))

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

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

 

 

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

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

你可能感兴趣的:(Python学习)