2016-03-19 14 views
-2

あなたに悪夢がある... python3.5の完全な機能不全!python 3.5:if文がtrueと評価され、何もしない場合でも、何かをしても

print(value.time() > marketclosed) prints True。

if value.time() > marketclosed: 
    #somecode 

if文に含まれるコードは実行されません。

現在、この文脈で使用されています。エラーはなく、このif文についてのコンパイラからの覗き見ではありません。ちょっと..何もない。

import datetime as dt 

for i in range(0,int(total_intervals)):

amount_to_add = dt.timedelta(hours=marketopen.hour,minutes=marketopen.minute) + dt.timedelta(seconds=interval_seconds)*i 
    basevalue = start_datetime + amount_to_add 
    value = basevalue 
    print(value.time()) 
    print(marketclosed) 
    print(value.time() > marketclosed) 
    print(value.date()) 
    print(value.date().isoweekday()) 
    if value.time() > marketclosed: # advance to next day 
     value + dt.timedelta(days=1) 
     value.combine(value.date(),marketopen) 

その不気味な...誰かが偉大さの危機に瀕しているときにその世界などは停止して磨きます!

+0

5つの印刷ステートメントのそれぞれによって何が印刷されますか? –

+3

'value + timedelta(days = 1)'は実際には何もしません。代わりに '+ ='が必要な場合があります。次の行についても同じです。 – bereal

答えて

2

value + timedeltavalue.combine()の結果は破棄されます(元のオブジェクトに変更を加えることなく新しいオブジェクトが作成されるため)。このコードは実行されますが、何もしません。これは動作するはずです:

if value.time() > marketclosed: # advance to next day 
    value += dt.timedelta(days=1) 
    value = value.combine(value.date(), marketopen) 

PylintはW0104, pointless-statementとして少なくとも+一部を報告しなければなりません。

1

なぜコードが実行されないと思いますか?

'値'を毎回base_valueにリセットすると、 'if'ステートメントの呼び出しから効果を見ることができなくなります。

'if'ステートメント内に印刷行を挿入して、実行されているかどうかを確認します。

関連する問題