0

次のコードで同じ ValueError が発生し続け、エラーが生成される理由を理解するのに苦労しています。間違った値が関数に渡されたときにこのエラーが生成されることは理解していますが、このエラーが何を伝えているのかよくわかりません。オンラインやドキュメントで時間をかけて検索しましたが、何が間違っているのか理解できません。簡単に言えば、なぜこのエラーが生成されるのですか?

私のコード:

import datetime
import ystockquote

def new_time(n):
    fmt = "%Y%m%d"
    end_date1 = datetime.datetime.strptime(n, fmt)
    sixty_day = datetime.timedelta(days=60)
    start_date  = end_date1 - sixty_day
    start_date1 = str(start_date)
    start_date2 = start_date1[:4] + start_date1[5:7] + start_date1[8:10]
    return start_date2

def average_atr():
    print "Enter your stock symbol: "
    symbol      = raw_input(" ")
    print "Enter the end date in (YYYYMMDD) format: "
    end_date    = raw_input(" ")
    start_date  = new_time(end_date)
    initial_list = ystockquote.get_historical_prices('symbol', 'start_date', 'end_date')

def start():
    average_atr()

start()

これは、ystockquote に関連するコードです。

def get_historical_prices(symbol, start_date, end_date):
    """
    Get historical prices for the given ticker symbol.
    Date format is 'YYYYMMDD'

    Returns a nested list.
    """
    url = 'http://ichart.yahoo.com/table.csv?s=%s&' % symbol + \
          'd=%s&' % str(int(end_date[4:6]) - 1) + \
          'e=%s&' % str(int(end_date[6:8])) + \
          'f=%s&' % str(int(end_date[0:4])) + \
          'g=d&' + \
          'a=%s&' % str(int(start_date[4:6]) - 1) + \
          'b=%s&' % str(int(start_date[6:8])) + \
          'c=%s&' % str(int(start_date[0:4])) + \
          'ignore=.csv'
    days = urllib.urlopen(url).readlines()
    data = [day[:-2].split(',') for day in days]
    return data

上記の ystockquote コードは完全なコードではないことに注意してください。

4

2 に答える 2

6

functionaverage_atr()で、次の行を変更します。

initial_list = ystockquote.get_historical_prices('symbol', 'start_date', 'end_date')

に:

initial_list = ystockquote.get_historical_prices(symbol, start_date, end_date)

現在のバージョンでは、変数を に渡す代わりにystockquote.get_historical_prices()、変数名を含むリテラル文字列を渡しています。これstr(int(end_date[4:6]) - 1)により、変数end_dateの値'end_date'が になり、'end_date'[4:6]isになり'da'ます。

于 2012-08-06T17:44:35.387 に答える
2

関数 get_historical_prices に文字列「start_date」と「end_date」を送信しています。関数は、代わりに実際の string-date 値が渡されることを期待していたようです。次の行の引数を囲む引用符を削除するだけです。

initial_list = ystockquote.get_historical_prices('symbol', 'start_date', 'end_date')
于 2012-08-06T17:46:40.657 に答える