2013-09-26 41 views

回答

2

除了縮進和缺少冒號外,您的解決方案還有一些問題。

首先,您正在使用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' 
0

重要的是要正確縮進。 (不要混用製表符和空格。)

def loop(a): 
    i = 0 
    while a >= 1: 
     print(a % 10) 
     a = a/10 
     i = i + 1 

你也該while條件後缺少一個冒號。

1

幾個問題:

  • 您的壓痕不匹配。 PEP 8建議4個空格用於縮進。

  • 你缺少一個冒號後while(a>=1)

  • 雖然這不是一個問題,你不需要在while循環括號,它可以只是while a >= 1

  • s = s/10威力不回報你所期望的。例如,12/10 == 1(除非你在這裏處理浮動)。


此都可以使用切片簡化:

>>> print int(str(123)[::-1]) 
321 
+0

實際上'S/10'(整數在Python 2區;或單曲//在Python 3 10')將是OP想要的 - 除了它應該是'a',而不是's'。 – poke