Python - 编写一个循环显示给定数字的反向形式
我想让用户输入一个数字,然后让电脑把这个数字反过来输出。你们觉得我该怎么做呢?
num = int(input("insert a number of your choice "))
for i in
这就是我目前的进展……我用的是3.3.4版本。
6 个回答
0
我不太想替你解决问题,因为你似乎并没有真正尝试去解决它,也没有具体说明你遇到了什么困难。不过:
num = str(input("..."))
output = [num[-i] for i in range(len(num))]
print(output)
1
这里有很多不同的回答,很多看起来都差不多。
for i in str(num)[::-1]:
print i
这个简洁的变体做了几件值得用简单话说的事情,具体来说:
- 把
num
转换成字符串 - 反转它(用
[::-1]
,这是一个切片的例子,我建议你多了解一下这个用法) - 最后,遍历这个反转后的字符串(因为字符串是可以迭代的,你可以逐个字符地处理它们)
- 并打印出每个字符。
几乎所有的回答都使用 [::-1]
来反转列表——随着你阅读更多的代码,你会在更多地方看到这个用法。我建议你在 S.O. 上多了解一下 这里。
1
为什么要把它变成数字呢?“反向”这个说法听起来像是字符串。所以不如别把它转换成整数,而是直接当作字符串来用,反向遍历它就行了。
4
你不需要先把它变成整数再变回字符串!直接这样做就行:
num = input("insert a number of your choice ")
print (num[::-1])
或者,你可以试试用for循环来做:
>>> rev = ''
>>> for i in range(len(num), 0, -1):
... rev += num[i-1]
>>> print(int(rev))
最好的方法是反向遍历Python字符串,说的是最有效和推荐的方式是:
>>> for c in reversed(num):
... print(c, end='')
5
这里有一个答案,它通过不断地把一个数字除以10,并每次取余数,来输出这个数字的反向结果,而不是反转一个字符串:
num = int(input("Enter a number: "))
while num > 0:
num, remainder = divmod(num, 10)
print remainder,
哦,我也没有仔细阅读要求!它必须用一个for循环。唉。
from math import ceil, log10
num = int(input("Enter a number: "))
for i in range(int(ceil(math.log10(num)))): # => how many digits in the number
num, remainder = divmod(num, 10)
print remainder,