2012-02-18 7 views
2

「何もしない」LCが必要な問題に悩まされています。以下このリストの理解に何が問題なのですか(SyntaxError:構文が無効です)?

コードスニペット:

def daterange(start_date, end_date): 
    for n in range((end_date - start_date).days): 
     yield start_date + dt.timedelta(n) 


def get_workdays_between_dates(start_date, end_date): 
    return [x in daterange(start_date, end_date) if x.date.weekday() in range(0,7)] 

Pythonが 'でSyntaxError:無効な構文エラー' barfs関数get_workdays_between_datesを解析します()。私にはうまく見えます...

コードには何が問題なのですか?

答えて

3

xとはなんですか? :)はい、それは無効な構文です、あなたはfor部分がありません。

[x for x in daterange(start_date, end_date) if x.date.weekday() in range(0,7)] 
+0

ガー!今すぐコーナーに立つために遠ざかる。だから自分自身を恥じて: –

+4

カクテルの傘が付いている明るいコーナーを選ぶ –

0

構文エラーを除いて、その行にはさらに3つの問題があります。

問題1:xdatetimeオブジェクトを参照するように見えることを考える方法ではなく、属性が

>>> import datetime 
>>> x = datetime.datetime.now() 
>>> x 
datetime.datetime(2012, 2, 19, 9, 23, 53, 136000) 
>>> x.date.weekday() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'builtin_function_or_method' object has no attribute 'weekday' 
>>> x.date() 
datetime.date(2012, 2, 19) 
>>> x.date().weekday() 
6 

問題x.dateされる2:.dateは冗長である

>>> x.weekday() 
6 

問題3:それx.weekday() in range(0,7)はいつもTrueになると私には思われます。おそらくあなたは:

# initialisation 
NON_WEEKEND_DAYS = set(range(0, 5)) 

# as needed 
... x.weekday() in NON_WEEKEND_DAYS ... 
関連する問題