我的問題是什麼?我想動作倒數 - 例如:123 ==> 321如何在python中的字謎數字?
def loop(a):
i=0
while(a>=1)
print(a%10)
s=s/10
i=i+1
我的問題是什麼?我想動作倒數 - 例如:123 ==> 321如何在python中的字謎數字?
def loop(a):
i=0
while(a>=1)
print(a%10)
s=s/10
i=i+1
除了縮進和缺少冒號外,您的解決方案還有一些問題。
首先,您正在使用print
,它會自動添加換行符,因此可能不是您想要的結果。您可以將結果存儲在您追加最新字符的字符串中,然後在最後打印一次。
此外,您正在使用以前從未使用過的變量s
。在這種情況下,它應該是a
,因爲您希望使用整數除10來去除最後一位數字。請注意,在這種情況下,這隻會在Python 2中起作用,因爲Python 3將在那裏使用浮點除法(例如15/10 == 1.5
)。你可以通過明確地使用整數除法來防止這種情況(這也會使你的意圖更清晰):s = s // 10
(注意兩個斜槓)。
最後,你正在增加變量i
而不用它,所以你可以擺脫它。
最後,它可能是這樣的:
def reverse (a):
rev = ''
while a > 1:
rev += str(a % 10)
a = a // 10
較短的解決方案,利用的事實,你可以扭轉字符串:
>>> num = 123
>>> rev = int(str(num)[::-1])
>>> rev
321
如果你離開了int()
,你甚至可以保持拖尾/前導零並得到一個字符串:
>>> num =
>>> str(num)[::-1]
'0123'
個
重要的是要正確縮進。 (不要混用製表符和空格。)
def loop(a):
i = 0
while a >= 1:
print(a % 10)
a = a/10
i = i + 1
你也該while
條件後缺少一個冒號。
幾個問題:
您的壓痕不匹配。 PEP 8建議4個空格用於縮進。
你缺少一個冒號後while(a>=1)
雖然這不是一個問題,你不需要在while循環括號,它可以只是while a >= 1
s = s/10
威力不回報你所期望的。例如,12/10 == 1
(除非你在這裏處理浮動)。
此都可以使用切片簡化:
>>> print int(str(123)[::-1])
321
實際上'S/10'(整數在Python 2區;或單曲//在Python 3 10')將是OP想要的 - 除了它應該是'a',而不是's'。 – poke