在不使用反向函数或列表的情况下反转整数

我一直在为我的班级遇到一个问题而苦苦挣扎,当我想出一个解决方案时,我的教授告诉我这是不正确的,即使我得到了他要求的输出,同时遵守他为这个问题设置的规则。


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


编写一个 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!")

它适用于任何数字,甚至以 0 结尾的数字。


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


互换的青春
浏览 230回答 2
2回答

喵喵时光机

尝试这个:def reverse(n):    m = 0    while n > 0:        n, r = divmod(n, 10)        m = 10 * m + r    return m但是,对于实际应用程序,我希望以下内容会更快:def reverse(n):    return int(str(n)[::-1])尝试满足评论中给出的愚蠢约束的其他一些方法:n = 45712090s = str(n)t = ""m = len(s)for i in range(m):    t = s[i] + tprint(t)n = 45712090s = str(n)m = len(s)for i in range(m - 1, -1, -1):    print(s[i], end="")print()import mathn = 45712090m = math.ceil(math.log10(max(1, n)))for i in range(m):    n, r = divmod(n, 10)    print(r, end="")print()

哔哔one

a = int(input())b = 0 while(a>0):    b = b*10 + a%10    a = a//10print(b)在 while 循环中,我们传递条件,运行直到 a(12345) 小于 0 最初 b =0 所以 b*10 等于 0 + a(12345)%10 = 5(将是你的 a 的最后一位)然后在下一行当您在 a(12345)//10 中进行地板除法时,它将取出 a 的最后一位数字并变为 1234 并且此循环再次运行并检查 a(1234) > 0 然后这次转到第二行 b = b(5)*10 + a(1234)%10 ,b 变为 50,a 变为 123 这将一直持续到 a 中没有数字为止,希望你明白
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python