2016-11-11 11 views
-4

私の解決策です。エレガントではありません。助けてください。誰でもこの関数を1行に書くのを助けることができますか?

def calculateHandlen(hand): 
    """ 
    Returns the length (number of letters) in the current hand. 

    hand: dictionary (string int) 
    returns: integer 
    """ 
    num = 0 
    keyS = hand.keys() 
    for key in keyS: 
     if hand[key] > 0: 
      num += hand[key] 
    return num 
+3

なぜ1行に入力する必要がありますか?関数に何が問題なのですか? –

+4

なぜですか?この関数は、それが正しい方法です。より洗練されたコードを作るために、 "one-liners"という考えの罠に陥ってはいけません。 –

+0

「長さ(文字数)」は、「手[キー]> 0: 'ならあなたはどうしますか? –

答えて

4
def calculateHandlen(hand): 
    return sum(v for v in hand.values() if v > 0) 

しかし、なぜ?

+0

私はmit 6.00.1xを取っています。そして誰かが彼/彼女が1行でそれをすることができると言いました。しかし、私はそれを信じていません。それが理由です。ありがとう! –

+2

@VatoLiu技術的には、Pythonで1つのライナーが完全にチューリングされています。あなたは何でもできます。 –

関連する問題