2017-03-10 37 views
0

我正在通過在線學習平臺來做這個問題,並且有我必須通過的測試用例。 主題是高階函數。把小數轉換成任何基數的函數

這裏是這樣的問題:

寫功能make_decimal_to_n_ary_converter接受的數n,其中1 <Ñ< 17,並返回一個數轉換器,一個給定的十進制數轉換爲基數n的。

下面是我的代碼(我應該使用一個內部函數,即轉換器(X))

def make_decimal_to_n_ary_converter(n): 
    def converter(x): 
     if x==0 or x==1: 
      return x 
     i=x 
     b=('A','B','C','D','E','F') 
     result = "" 
     while i>0: 
      a=i%n   #3 
      if a<10: 
       result = str(i%n)+result 
      else: 
       d=a-10 
       result = b[d] + result 
      i=i//n 

     return result 
    return converter 

#Lines below are not to be changed, part of qn 
decimal_to_binary = make_decimal_to_n_ary_converter(2) 
decimal_to_octal = make_decimal_to_n_ary_converter(8) 
decimal_to_hexadecimal = make_decimal_to_n_ary_converter(16) 

下面是一些我的代碼通過測試案例:

decimal_to_binary (213)
decimal_to_octal(213)
decimal_to_hexadecimal(213)
D5
make_decimal_to_n_ary_converter(15)(213)
E3

然而,我的代碼失敗一些私人的測試用例,而我收到的反饋是,我在while循環的邏輯是錯誤的。但是,打印一些數字後,我沒有看到任何錯誤。 希望有任何幫助,謝謝!

回答

0

解決了它。我的錯誤是對於基本情況x,我不得不返回一個字符串。