2015-05-05 38 views
1

我的任務是使用兩個函數來(a)顛倒數字和(b)來檢查剛纔顛倒的數字是否是它自己的迴文。更改函數簽名

number = eval(input("enter number: ")) 
reverse(number) 



def reverse(number): 
    reversed = int(str(number)[::-1]) 
    isPalindrome(number,reversed) 

def isPalindrome(number,reversed): 
    if reversed == number: 
    print("the number",number,"is a palindrome.") 

else: 
    print("the number",number,"is NOT a palindrome.") 

此代碼工作得很好,但我的教授希望這兩個函數只接受「數字」作爲參數,而不是數量和扭轉,因爲我有。我不確定我會如何去做這件事。任何幫助,將不勝感激。謝謝大家。

+4

[不要使用'eval'](http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html)在那裏使用'int'。除此之外,這裏還有嚴重的縮進問題。請儘量糾正它們 –

+0

「reverse」和「isPalindrome」都可能以字符串作爲參數。如果一個數字是一個迴文,只有在某個特定基數中的表示是的時候纔是有意義的。一百九十五個不是以10(195)或16(C3)爲底數的迴文,但是它是一個無符號的二進制數(11000011)。 – chepner

回答

0

您可以使用參數輸入傳遞給函數,並使用return關鍵字從函數

def reverse(number): 
    return ''.join(str(number)[::-1]) 

def isPalindrome(number): 
    return str(number) == reverse(number) 

得到輸出例

>>> isPalindrome(100) 
False 
>>> isPalindrome(5005) 
True 
+0

在反向函數'str(number)[:: - 1]'就夠了,不需要使用join – Hackaholic

0

你不需要投在所有的詮釋,請致電isPalindrome撥打電話reverse,您只需輸入字符串即可:

def reverse(number): 
    return number[::-1] # return string reversed 

def isPalindrome(number): 
    if reverse(number) == number: # compare reversed string to original 
     print("the number", number, "is a palindrome.") 
    else: 
     print("the number", number, "is NOT a palindrome.") 


number = input("enter number: ") 
isPalindrome(number)