2016-08-15 6 views
0

数値を含む数値の範囲を加えた関数を作成しようとしていました。数値を含む範囲内のすべての数値を追加する

ときI入力5本機能が動作しないのはなぜだから、私は15

を受ける必要がありますか?

def sum_nums(number): 
    start = 0 
    for index in range(0,len(number)): 
     start += index 
    return start 

print sum_nums(5) 
+0

'len(number)'を 'number'に置き換えてみてください。 – Blorgbeard

+0

なぜあなたは 'range 'の代わりに数字の' len'を取っていますか? – TigerhawkT3

+1

また、このコードではエラーメッセージが表示されます。質問には何らかのエラーが含まれていてください。 – Blorgbeard

答えて

0

までこれが1つのライナーで行うことができるが、私はあなたがしようとしている形式のソリューションであなたを助けるでしょう反復処理するときに達成することができ欲しいもの。

def sum_nums(number): 
    total = 0 
    for i in range(number + 1): 
     total += i 
    print total 

入力5

出力も15

、あなたのエラーメッセージのとおり、いくつかの明確化。文字列にはlenを使用します。整数には長さがありません。 range関数に渡すだけで、(開始番号を指定しない場合は)1からその番号までのすべての番号を試しますが、それを含めません。だから私たちはrange(number + 1)にターゲット番号を含めるのです。

・ホープ、このことができます:)

+1

それは働いた!ありがとうございました ! – BeeGee

+0

@BeeGee問題ありません! – Harrison

+1

あなたの説明はたくさん意味があります、もう一度ありがとう! – BeeGee

1

以下のように「reduce」でビルドされたpythonを使用してください。また、あなたは1から開始し、6

reduce(lambda x, y: x+y, range(1, 6)) 
1

をあなたがして1つのライナーでこれを行うことができます。これを打破するには

def sum_range_inclusive(number): 
    return sum(range(number + 1)) 

# assume number is 5 for now 
number = 5  

# exclusive, doesn't include the number 
range(number) 
# returns [0, 1, 2, 3, 4] 

# inclusive, includes the number 
range(number + 1) 
# returns [0, 1, 2, 3, 4, 5] 

# sum of inclusive range 
sum([0, 1, 2, 3, 4, 5]) 
# returns 15 
+0

ニース!あなたはちょうどそのような範囲を '合計することができることを理解していない! – elethan

+1

ええ、rangeは 'list()'と 'sum()'を返します。リスト、タプル、セットなどの数字を含む任意の反復可能文字を合計できます。 – Soviut

+0

おかげで、ありがとう! 'range'を除いて' list' afaikを返しません。それは私の答えに 'list'呼び出しを追加した理由です(私はあなたの方が良いので削除しました)。私はそれが以前必要だったと思った。 – elethan

2

を誰かのdidn場合は、この質問は間違っだろうsum(range(n))は常にn*(n-1)/2です。値nを含むこれを行う場合は、式はsum(range(n+1))n*(n+1)/2です。

関連する問題