Python一行代码实现数字(字符)倒序
前言
最近在写学校Python测评题的时候看到了这么一个基础题目
题目描述:给定一个正整数,请将该数各位上数字反转得到一个新数。得到的新数的最高位数字不应为零,例如输入380,反转后得到的新数为83。
然后看到不同同学的各种做法(其中包括标题中所说的一行代码的解法),感觉很有意思,就打算在这里讲解一下主流的2种做法
正文
第一种解法:通过算法实现
代码如下:
1 | num=int(input()) |
原理:
如上(bushi(想必这么简单的算法网友们也不需要我讲解了哈哈
第二种解法:通过字符串倒序实现(一行代码)
代码如下:
1 | 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
- 若i或j大于len(s),则i或j被len(s)取代
- 若i省略或i是None值,则i被0取代
- 若j省略或j是None值,则j被len(s)取代
- 若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为止
- 当k为正数,下标选取反向从0到len(s)-1
- 当k为附属,下标选取反向从len(s)-1到0
- 当i或j省略或是None值,则被端下标(0或len(s)-1)所取代(具体看k的正负符号)
- k不能为0.若k为None值,则被k看成1
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Sevin的小窝!
评论