2016-03-19 21 views
-2

bir şey yapması söylense bile sizin için bir kabus görürsünüz .. python3.5 tam bir arıza!python 3.5: ifade doğru olarak değerlendirir ve hiçbir şey yapmazsa,

print(value.time() > marketclosed) baskıları Doğru. If ifadesinde bulunan kodu yürütmez. Bu bağlamda şu anda bu bağlamda kullanılmaktadır. hiçbir hata, bu ifade hakkında derleyici bir peep değil. sadece hiçbir şey.

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) 

onun ürkütücü .. Birisi büyüklüğünün eşiğinde olduğu zaman onun dünya gibi felç!

+0

Bu 5 yazdırma ifadesinin her biri tarafından yazdırılan nedir? –

+3

'value + timedelta (gün = 1)' hiçbir şey yapmıyor. Bunun yerine + = 'isteyebilirsiniz. Bir sonraki çizgi ile aynı. – bereal

cevap

2

Bu kodun yürütüldüğüne eminim, sadece hiçbir şey yapmıyor, çünkü value + timedelta ve value.combine() sonuçları atılıyor (orijinali değiştirmeden yeni bir nesne oluşturuyorlar). Bu çalışması gerekir:

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

PyLint W0104, pointless-statement gibi en az + bölümünü bildirmelisiniz.

1

Neden kodun yürütülmediğini düşünüyorsunuz?

Her seferinde "değer" i yeniden adlandırırsınız, böylece 'if' ifadesindeki aramalardan herhangi bir etki göremezsiniz.

Yürütülen olup olmadığını kontrol etmek için 'if' ifadesinin içine bir yazdırma satırı koyun.

İlgili konular