不使用Python中的反向函数或列表来反向整数。学生

时间:2018-12-09 03:01:02

标签: 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!")

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

Idk在有限制的情况下我还能怎么做?

请记住,我的编码知识非常基础,尤其是在python中。

非常感谢。

2 个答案:

答案 0 :(得分:3)

尝试一下:

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

答案 1 :(得分:0)

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中没有剩余数字,我希望你能得到它