为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

互换的青春 2021-09-11 16:01:20
我一直在为我的班级遇到一个问题而苦苦挣扎,当我想出一个解决方案时,我的教授告诉我这是不正确的,即使我得到了他要求的输出,同时遵守他为这个问题设置的规则。问题要求我执行以下操作:编写一个 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 + revStrprint("Your wish is my command! Your" , num, "looks like", revStr, "Backwards!")它适用于任何数字,甚至以 0 结尾的数字。考虑到限制,我不知道我还能怎么做。我可能做错了什么?
查看完整描述

2 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

尝试这个:


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 = 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()


查看完整回答
反对 回复 2021-09-11
?
哔哔one

TA贡献1854条经验 获得超8个赞

a = int(input())

b = 0 


while(a>0):

    b = b*10 + a%10

    a = a//10


print(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 中没有数字为止,希望你明白


查看完整回答
反对 回复 2021-09-11
  • 2 回答
  • 0 关注
  • 229 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信