3

わかりました、私は自分自身に挑戦したので、プログラミングを行うことができます.

しかし、私はいくつかの問題に直面しました。

adtprice = {19.99 , 49.99}
chldprice = adtprice * (3/4) - 7.5

そして、これは私が結果として得たエラーです。

Traceback (most recent call last):
File "C:/Users/Owner/Desktop/Programming Scripts/park.py", line 2, in <module>
chldprice = adtprice * (3/4) - 7.5
TypeError: unsupported operand type(s) for *: 'set' and 'float'

adtprice と chldprice を頻繁に使用するので、シンプルで使いやすいものにしたいと考えています。

4

5 に答える 5

1

まず、リストではなくセットがあります。中括弧の代わりに角括弧を使用してリストを作成します。

他の人が述べたように、リストの個々の要素を操作する必要があります。

リスト内包表記でそれを行うことができます

adtprice  = [19.99, 49.99]
chldprice = [p * (3./4) - 7.5
             for p in adtprice]

またはmap、必要に応じて を使用します。

adtprice  = [19.99, 49.99]
chldprice = map(lambda p: p * (3./4) - 7.5,
                adtprice)

シーケンスに対してこれらのタイプの一括操作を実行したい場合は、numpyの使用を検討してください。これは、行列とベクトルの計算を簡潔かつ強力な方法で効率的に処理する一連のライブラリです。例えば:

adtprice  = numpy.array([19.99, 49.99])
chldprice = adtprice * (3./4) - 7.5
于 2013-05-12T20:57:49.090 に答える
1

他の答えは機能しますが、値のシーケンスに対して実際に数学演算を行いたい場合は、ライブラリを使用するnumpyことをお勧めします。それはまさにそれで本当に素晴らしい仕事をします。numpy 配列を使用したコードは次のようになります。

import numpy as np

adult_prices = np.asarray([19.99, 49.99])
child_prices = adult_prices * (3.0/4) - 7.5  # math operations work item by item

print(child_prices) # prints "array([  7.4925,  29.9925])"

同様の方法でできることは他にもたくさんあります。たとえば、小数点以下 2 桁だけが必要な場合は、結果を丸めることができます。

child_prices = np.round(adult_prices * (3.0/4) - 7.5, 2)

print(child_prices) # prints "array([  7.49,  29.99])"
于 2013-05-12T21:26:25.303 に答える