Python一行代码实现数字(字符)倒序

前言

最近在写学校Python测评题的时候看到了这么一个基础题目

题目描述:给定一个正整数,请将该数各位上数字反转得到一个新数。得到的新数的最高位数字不应为零,例如输入380,反转后得到的新数为83。

然后看到不同同学的各种做法(其中包括标题中所说的一行代码的解法),感觉很有意思,就打算在这里讲解一下主流的2种做法

正文

第一种解法:通过算法实现

代码如下:

num=int(input())
reverseNum=0
while num>0:
    reverseNum=reverseNum*10+num%10
    num=num//10
print(reverseNum)

原理:

如上(bushi(想必这么简单的算法网友们也不需要我讲解了哈哈

第二种解法:通过字符串倒序实现(一行代码)

代码如下:

print(int(input()[::-1]))

原理:

  • 获取用户输入的字符串
  • 通过序列操作将字符串倒序
  • 将倒序后的字符串转换成整形,以消除前面可能会出现的数字
  • 输出结果

语法讲解:

[:]的用法

s[i,j]
从下标i到下标j截取序列s中的元素

  • 如果i或j为负数,则下标从序列尾部算起。也就是说,下标i相当于下标len(s)+i,下标j相当于下标len(s)+j。另外,-0依然是0
  • 从序列s的下标i的元素(包含)到下标j的元素(不包含)之间所有元素,进行截取。另外,i<j
    1. 若i或j大于len(s),则i或j被len(s)取代
    2. 若i省略或i是None值,则i被0取代
    3. 若j省略或j是None值,则j被len(s)取代
    4. 若i>=j,返回没元素的序列
[::]的用法

s[i,j,k]
从下标i到下标j,步长为k,截取序列s中的元素

  • 如果i或j为负数,则下标从序列尾部算起。也就是说,下标i相当于下标len(s)+i,下标j相当于下标len(s)+j。另外,-0依然是0
  • 从序列s的下标i的元素(包含)到下标j的元素(不包含)之间,选取下标为i+nk的元素(0<=n<(j-i)/k),也就是说,选取下标为i,i+k,i=2k,i+3*k等等的元素,直到下标大于等于j为止
    1. 当k为正数,下标选取反向从0到len(s)-1
    2. 当k为附属,下标选取反向从len(s)-1到0
    3. 当i或j省略或是None值,则被端下标(0或len(s)-1)所取代(具体看k的正负符号)
    4. k不能为0.若k为None值,则被k看成1
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值