不使用反转函数或列表反转整数

0 python

我一直在为课堂上的一个问题而苦苦挣扎,当我想出一个解决方案时,我的教授告诉我这是不正确的,尽管我得到了他要求的输出,同时遵守了他为该问题制定的规则。

该问题要求我执行以下操作:

编写一个 Python 程序,从键盘读取一个整数并将其反转写入屏幕。您需要使用 for 循环,不要使用反向函数或列表。

我的代码如下所示:

num = int(input("So you like things backwards eh? Well, enter a number and 
I'll do my best: "))
Onum = str(num)
revStr = ""
for x in Onum:
  revStr = x + revStr

print("Your wish is my command! Your" , num, "looks like", revStr, "Backwards!")
Run Code Online (Sandbox Code Playgroud)

它适用于任何以 0 结尾的偶数。

考虑到这些限制,我不知道还能怎么做。我可能做错了什么?

小智 5

尝试这个:

def reverse(n):
    m = 0
    while n > 0:
        n, r = divmod(n, 10)
        m = 10 * m + r
    return m
Run Code Online (Sandbox Code Playgroud)

然而,对于真正的应用程序,我希望以下速度更快:

def reverse(n):
    return int(str(n)[::-1])
Run Code Online (Sandbox Code Playgroud)

尝试满足评论中给出的愚蠢约束的其他一些方法:

n = 45712090
s = str(n)
t = ""
m = len(s)
for i in range(m):
    t = s[i] + t
print(t)


n = 45712090
s = str(n)
m = len(s)
for i in range(m - 1, -1, -1):
    print(s[i], end="")
print()


import math
n = 45712090
m = math.ceil(math.log10(max(1, n)))
for i in range(m):
    n, r = divmod(n, 10)
    print(r, end="")
print()
Run Code Online (Sandbox Code Playgroud)