2016-10-27 34 views
0

我有一個課程要做。我需要通過所有需要的6個測試。我已經通過了5次,但有一個關於Python中的類的問題。類錯誤 - 無類型和詮釋 - Python

def doomsday(y): 

    """ 
    >>> doomsday(2012) 
    3 
    >>> doomsday(1899) 
    2 
    >>> doomsday(1923) 
    3 
    >>> doomsday(10000) 
    -1 
    >>> doomsday(1756) 
    -1 
    >>> type(doomsday(2010)) 
    <class 'int'> 
    """ 
    try: 
     y 
    except ValueError: 
     return 
    if y in range (1800, 1899+1): 
     x = 5 
     w = y%100 
     a = w//12 
     b = w%12 
     c = b//4 
     d = (a + b + c)%7 
     t = x + d 
     if t>6: 
      t = t - 7 
      print (t) 
     else: 
      print (t) 

    elif y in range (1900, 1999+1): 
     x = 3 
     w = y%100 
     a = w//12 
     b = w%12 
     c = b//4 
     d = (a + b + c)%7 
     t = x + d 
     if t>6: 
      t = t - 7 
      print (t) 
     else: 
      print (t) 
    elif y in range (2000, 2099+1): 
     x = 2 
     w = y%100 
     a = w//12 
     b = w%12 
     c = b//4 
     d = (a + b + c)%7 
     t = x + d 
     if t>6: 
      t = t - 7 
      print (t) 
     else: 
      print (t) 

    elif y in range (2100, 2199+1): 
     x = 0 
     w = y%100 
     a = w//12 
     b = w%12 
     c = b//4 
     d = (a + b + c)%7 
     t = x + d 
     if t>6: 
      t = t - 7 
      print (t) 
     else: 
      print (t) 

    else: 
     x = -1 
     print (x) 

我不能通過這個測試:

type(doomsday(2010)) 
    class 'int' 

和錯誤是:

Failed example: 
    type(doomsday(2010)) 
Expected: 
    class 'int' 
Got: 
    0 
    class 'NoneType' 
+1

你的函數不返回任何東西,所以用的'返回值的隱含回報沒有'會發生。如果你想讓你的函數返回一個整數,你需要明確地做。 –

+1

'print'不是'return' –

回答

0

你錯誤可能來自於你瘦身的事實k print()返回一些值。它不是。

您的函數不會返回任何內容,因此會返回一個返回值爲None的隱式返回值。如果你想讓你的函數返回一個整數,你需要明確地做。沒有return語句

[...]偶函數都返回一個值[...],這個值被稱爲無:即與return小號

Python Documentation on functions替換您print()的(這是一個內置的名字)。寫入值None通常會被解釋器抑制,如果它是唯一寫入的值。 [...]

(重點煤礦)

高清世界末日(Y):

""" 
>>> doomsday(2012) 
3 
>>> doomsday(1899) 
2 
>>> doomsday(1923) 
3 
>>> doomsday(10000) 
-1 
>>> doomsday(1756) 
-1 
>>> type(doomsday(2010)) 
<class 'int'> 
""" 
try: 
    y 
except ValueError: 
    return 
if y in range (1800, 1899+1): 
    x = 5 
    w = y%100 
    a = w//12 
    b = w%12 
    c = b//4 
    d = (a + b + c)%7 
    t = x + d 
    if t>6: 
     t = t - 7 
     return t 
    else: 
     return t 

    etc... 
0

剛需,而不是返回打印它們的值:

def doomsday(y): 

    """ 
    >>> doomsday(2012) 
    3 
    >>> doomsday(1899) 
    2 
    >>> doomsday(1923) 
    3 
    >>> doomsday(10000) 
    -1 
    >>> doomsday(1756) 
    -1 
    >>> type(doomsday(2010)) 
    <class 'int'> 
    """ 
    try: 
     y 
    except ValueError: 
     return 
    if y in range (1800, 1899+1): 
     x = 5 
     w = y%100 
     a = w//12 
     b = w%12 
     c = b//4 
     d = (a + b + c)%7 
     t = x + d 
     if t>6: 
      t = t - 7 
      return t 
     else: 
      return t 



    elif y in range (1900, 1999+1): 
     x = 3 
     w = y%100 
     a = w//12 
     b = w%12 
     c = b//4 
     d = (a + b + c)%7 
     t = x + d 
     if t>6: 
      t = t - 7 
      return t 
     else: 
      return t 
    elif y in range (2000, 2099+1): 
     x = 2 
     w = y%100 
     a = w//12 
     b = w%12 
     c = b//4 
     d = (a + b + c)%7 
     t = x + d 
     if t>6: 
      t = t - 7 
      return t 
     else: 
      return t 

    elif y in range (2100, 2199+1): 
     x = 0 
     w = y%100 
     a = w//12 
     b = w%12 
     c = b//4 
     d = (a + b + c)%7 
     t = x + d 
     if t>6: 
      t = t - 7 
      return t 
     else: 
      return t 

    else: 
     x = -1 
     return x 
相關問題