0

現在、別の CSV ファイルから数値データを取得しようとしています。次に、そのデータを Python のリストに配置します。ただし、特定の数値より大きいデータの個別のリストごとに値があるかどうかを Python に判断させるのに苦労しています。各リストを個別に検索して値を取得できるようにする必要があり、その時点で Python は選択したテキストを返す必要があります。何が欠けているのかわかりませんが、Python は私の構文を期待どおりに処理していないようです。

    import csv
    stocks = ['JPM','PG','KO','GOOG']
    for stock in stocks:
        Data = open("%sMin.csv" % (stock), 'r')
        Ticker = []
        for row in Data:
            Ticker.append(row.strip().split(','))
        if Ticker > 735:
            print "%s Minimum" % (stock)

混乱を取り除くために、他の株がティッカーになったコードを変更しました。

4

2 に答える 2

1

3 つの問題があり、結果を得ることができません。

  1. stockは値のリストであるため、リスト自体と数値を直接比較することはできません。
  2. リストにリストを追加しています。したがって、各値を操作していたとしても、リストを int と比較することになります。追加する要素を特定するか、それらすべてを適切に追加します。
  3. そのリストで最大値を見つけて、int と比較します。

まず、float をリストに追加します。

float(stock_value)

次に、分割行のどのインデックスが数値であるかを調べます。それらがすべて数値である場合は、次のように拡張してすべてをリストに追加します。

# only convert items to float that are not empty strings
stock.extend(float(val) for val in row.strip().split(',') if val.strip())

それが最初の列である場合は、その列だけを追加します。

stock.append(float(row.strip().split(',')[0]))

3 番目に、単に 735 より大きい値がリストにあるかどうかを知りたい場合は、リストの最大値を尋ねることができます。

if max(stock) > 735:
    print "%s Minimum" % (stock)
于 2012-07-16T04:43:09.067 に答える
1

株価をリストに追加するときは、必ず株価を浮動小数点に変換してください。

stock.extend(map(float, row.strip().split(',')))

さあ、あなたのテストに取り掛かりましょう。

max(stock) > 735

トリックを行う必要があります。リスト内の最大数が目標よりも大きい場合、少なくとも 1 つの数が目標を上回っていることがわかります。

より明示的な方法は次のとおりです。

any(x > 735 for x in stock)
于 2012-07-16T04:44:33.903 に答える