どうすればこれを解決できますか?
プログラムには、関数の定義が含まれている必要がありますsumTri(cutOff)
。この関数は Tri 数を合計に追加します。
Tri 数は 3 番目ごとの数です: 1, 4, 7, 10,
.... この関数は1, 4, 7,
、Tri 数が cutOff より小さい限り、連続する Tri 数 ... を合計に追加します。この関数は、これらの数値の合計を返します。
どうすればこれを解決できますか?
プログラムには、関数の定義が含まれている必要がありますsumTri(cutOff)
。この関数は Tri 数を合計に追加します。
Tri 数は 3 番目ごとの数です: 1, 4, 7, 10,
.... この関数は1, 4, 7,
、Tri 数が cutOff より小さい限り、連続する Tri 数 ... を合計に追加します。この関数は、これらの数値の合計を返します。
簡単だ:
def sumTri(cutOff):
return sum(range(1,cutOff,3))
または、低レベルが必要な場合:
def sumTri(cutOff):
sum = 0
tri = 1
while tri < cutOff:
sum += tri
tri += 3
return sum
両方の解決策について少し説明しようと思います。
最初のケースでは、Pythonの2つの「高レベル」関数を使用します。これにより、すべてが機能します。sum
およびrange
。このrange(a,b,c)
関数は、からa
までの番号のリストを生成b
しc
ます。例えば:
In [1]: range(1,10,3)
Out[1]: [1, 4, 7]
In [2]: range(1,22,3)
Out[2]: [1, 4, 7, 10, 13, 16, 19]
range
ここで、リスト内の数値が以下になるまで数値を生成することに注意する必要がありますb
。まさにあなたがあなたの仕事に必要なもの。
そしてsum
明らかに、引数としてリスト内の数値の合計を計算して返します。
In [3]: sum([1])
Out[3]: 1
In [4]: sum([1,2])
Out[4]: 3
In [5]: sum([1,2,3])
Out[5]: 6
ここで、これら2つの機能を組み合わせる必要があります。
return sum(range(1,cutOff,3))
2番目の解決策は、より「低レベル」で「アルゴリズム的」です。ここでは特別なPython関数を使用せず、すべて自分で行います。
2つの変数を使用して、合計を計算します。
sum
-合計を格納する変数tri
-段階的に追加する数値の現在の値を持つ変数あなたが次のようなものを書くとき:
a = a + 5
つまり、「今は、以前のプラス5a
と等しくなりたい」または「5ずつ増やしたい」ということです。あなたはそれを短く書くことができます:a
a
a += 5
これらの2つの形式は同等です。
しかし、単純に何かを追加する必要はありません。あなたは何かが起こるまで何度もそれをする必要があります。Pythonでは、次を使用して実行しますwhile
。
while someting-is-true:
do-something
while
条件をチェックするたびsomething-is-true
に、それがTrueの場合、下にあるwhile
(インデントされた)コマンドを作成しますdo-something
。
これで、ソリューションを作成するために必要なすべてのことがわかりました。
def sumTri(cutOff):
sum = 0 # we start the sum from 0
tri = 1 # and the first number to add is 1
while tri < cutOff: # next number to add < cutOff?
sum += tri # than add it to sum
tri += 3 # and increase the number by 3
return sum # now you have the result, return it
それが仕事をする機能でした。これで、この関数を使用できます。どのようにこれを行いますか?
def sumTri(cutOff):
...
# anywhere in you program:
# presuming a is the cutOff
print sumTri(a)
関数を実行してその結果を使用する場合は、と書くだけfunction_name(args)
です。