2015-06-19 37 views
1

我正在參加麻省理工學院的opencourse thingy,他們的第一次測驗中有這個代碼。在Python中,函數是「全部」意味着什麼?

def f(s): 
    d = {} 
    for c in s: 
     if c in d.keys(): 
      d[c] += 1 
     else: d[c] = 1 
    print d 
    x = None 
    for k in d.keys(): 
     if x == None: 
      x = d[k] 
      y = k 
     elif d[k] > x: 
      x = d[k] 
      y = k 
    return y 

所討論的問題是:

是F總,即用於類型STR的S的所有值限定?

我在想f總是因爲字符串中的任何內容,包括數字和特殊字符都可以通過代碼。我甚至關閉?

+2

@PadraicCunningham:因爲它被初始化爲None? – Kevin

+0

@凱文,是的,混合k和x –

+1

看起來像[數學](https://en.wikipedia.org/wiki/Partial_function),而不是Python的東西。 – TigerhawkT3

回答

7

如果他們認爲一個有效的字符串(我會,作爲一個邊緣案例),唯一不能工作的情況是空字符串。對於s = ''y將永遠不會被定義,你會得到

UnboundLocalError: local variable 'y' referenced before assignment 

對於所有非空字符串,是功能是「總」。根據Wolfram MathWorld「總功能」定義爲

爲所有可能的輸入值定義的函數。