2012-02-07 14 views
-2

私は何かをチェックするif文を含むpython関数を持っています。Pythonで条件付き条件を使用する

ブール値を渡して、if-statementチェックを実行するかどうかを呼び出し元が判断できるように関数を変更したいと考えています。

def my_func(a, b, c, perform_check=True): 

私は条件付きでのみ時々呼び出され、あるいは他の回をスキップするようにする方法を把握しようとしています。

+0

たぶん、あなたは、より簡潔に、ちょうどあなたの問題のジェネリック版に焦点を当てることができます。 – shenshei

+1

この問題は間違いなくより一般的な形式に引き抜かれ、質問者と他の人の両方が問題の根本を理解するのに役立ちます。 – mattbornski

+0

申し訳ありません!私は私の質問には十分な情報がないので、私は冗長にしようとしていたというコメントを得る傾向があります。 –

答えて

3

私はこのようなものは何が必要だと思い:

if include_already_seen or not data[person].get(item, 0): 
+0

ああ、そうです。私はブール論理を磨く時間を費やす必要があります。 [http://codingbat.com/python/Logic-2](http://codingbat.com/python/Logic-2) –

1
def find_recommendations(person, using=pearson_correlation, data=critics, include_already_seen=True): 
    totals = {} 
    sim_sum = {} 

    for critic in critics: 
    if critic != person: 
     similarity_score = using(data, person, critic) 
     print "the similarity score between %s and %s is %d" % (person, critic, similarity_score) 
     if similarity_score <= 0: continue # ignore similarity_scores below 0 

     for item in data[critic]: 

     if include_already_seen or (item not in data[person] or data[person][item] == 0): 
      totals.setdefault(item,0) 
      totals[item] += data[critic][item] * similarity_score 

      sim_sum.setdefault(item,0) 
      sim_sum[item] += similarity_score 

    #create the normalized list 
    rankings = [ (total/sim_sum[item],item) for item, total in totals.items()] 

    rankings_sorted = sorted(rankings) 
    rankings_sorted.reverse() 
    return rankings_sorted