我一直在为班上的一个问题苦苦挣扎,当我想出一个解决方案时,我的教授告诉我,这是不正确的,即使我得到了他所要求的输出,同时又遵守了为他制定的规则。问题。
问题要求我执行以下操作:
编写一个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中。
非常感谢。
答案 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中没有剩余数字,我希望你能得到它