2

私は正の整数を取りN、次の合計を計算する関数に取り組んでいます:

1 - 2 + 3 - 4 + 5 - 6 + .... N. 

私の教授は、これには「数式」を使用できないと言ったので、どうすればそれを実行できますか?

ループを使うことを考えましたが、ステートメントforにどのように、何を書くべきかわかりません。printこれは私がこれまでに持っているものです:

n=int(input("enter N="))
for i in range(1, n+1, 1):
    if i % 2 == 0:
        # I'm not sure what print statement to write here

私はそのような奇妙なことを試みprint(i= "+" i+1)ましたが、エラーが発生し、その後失われます。

私が今持っているもの

n=int(input('enter N='))
total=0
print("sum",)
for i in range(1, n+1, 1):
    if i % 2 == 0:
        count=count - i
        print("-", i)
    else:
        count=count + i
        print("+", i, end=" ")
print("=", total)

#still get errors saying name count not defined and unsupported sperand for +:   
4

5 に答える 5

2

まず、説明されているように合計を累積し、「数式を使用する」代わりにループしてそれを行うには、次のようにします。

n=int(input("enter N="))
total = 0
for i in range(1, n+1, 1):
    if i % 2 == 0:
        ????
    else:
        ????
print(total)

あなたは何を理解することができるはずです???? は:iごとに合計するために何かをする必要があり、それは偶数と奇数で異なります。

さて、あなたがそれをこのようなものを印刷したいのなら:

合計1-2+3-4 + 5-6 + .... N = X

次のように印刷できます。

n=int(input("enter N="))
total = 0
print ("sum", end=" ")
for i in range(1, n+1, 1):
    if i % 2 == 0:
        print("-", i, end=" ")
        ????
    else:
        if i == 1:
           print(i, end=" ")
        else:
           print("+", i, end=" ")
        ????
print("=", total)

編集で述べたように、負の合計と正の合計を別々に保持してからそれらを追加する場合は、に変更total = 0してからntotal, ptotal = 0, 0、それぞれを変更します???? パーツなので、1つは1つの合計で、もう1つはもう1つで動作します。

上記はすべてPython3用です。Python2で実行する場合は、これらのprint関数呼び出しをprintステートメントに変換する必要があります。デフォルトの改行の終わりを使用する単純なケースでは、かっこを削除するだけです。ただしend=" "、Python 2のprintステートメントはそのようなキーワードパラメータを使用しないため、代わりに「マジックコンマ」を使用する必要があります。これは、改行ではなくスペースで印刷を終了することを意味します。したがって、たとえば、これの代わりに:

print("+", i, end=" ")

あなたはこれをするでしょう:

print "+", i,

繰り返しますが、Python 3の場合、それについて心配する必要はありません。(また、Python 2と3の両方でまったく同じコードを実行する方法があります(たとえば、を使用sys.stdout.writeします)。両方の言語を頻繁に使用している場合は、これを確認することをお勧めします。)

于 2012-09-21T22:06:16.483 に答える
1

あなたはすでにそこにほとんどの道を進んでいます。ただし、なぜループ内にprintステートメントを配置する必要があると思うのかわかりません。結果は1つだけですよね?i%2 == 0の場合はすでにありますが、これは偶数の場合です。現在のiが奇数か偶数かに基づいて、加算または減算する必要があります。したがって、実行中の集計を維持し、必要に応じて各ループ反復で加算または減算し、最後に集計を出力します。

于 2012-09-21T22:05:47.653 に答える
1

奇数と偶数で起こることの違いがわかります。これは良いことです。

したがって、リストを循環するときに、数が偶数の場合は1つの操作を実行する、別の操作を実行します。

結果を計算したら、それを印刷します。

于 2012-09-21T22:06:07.757 に答える
1

ここの回答にはすでに多くの説明があります。したがって、この合計を計算できるさまざまな方法に対処しようとします。

方法 1 :

def mySum(N):
    answer = 0
    for i in range(1, N+1):
        if i%2:
            answer += i
        else:
            answer -= i
    return answer

方法 2 :

def mySum(N):
    answer = 0
    for i in range(1, N+1, 2):
        answer += i
    for i in range(2, N+1, 2):
        answer -= i
    return answer

方法 3 :

def mySum(N):
    pos = range(1, N+1, 2)
    neg = range(2, N+1, 2)
    return sum(pos) - sum(neg)

方法 4 :

def mySum(N):
    return sum([a-b for a,b in zip(range(1, N+1, 2), zip(2, N+1, 2))])

方法 5 :

def mySum(N):
    return sum([i*-1 if not i%2 else i for i in range(1,N+1)])

方法 6 :

def mySum(N):
    return sum(map(lambda n: n*[-1, 1][i%2], range(1, N+1)))

繰り返しますが、これらは Python への準備を整えるためのものです。他の人は良い説明を提供していますが、これは意図したものではありません

于 2012-09-21T22:31:51.693 に答える
-2
count = 0
print "0"
for i in range(1, n+1, 1):
    if i % 2 == 0:
        count = count - i
        print "-" , i
    else:
        count = count + i
        print "+" , i
print "=", count
于 2012-09-21T22:07:35.063 に答える