在for循环中打印语句

时间:2012-09-21 22:01:04

标签: python

我正在处理一个函数,它取一个正整数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 +:   

5 个答案:

答案 0 :(得分: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,然后更改每个????因此,一个人在一个人身上工作,一个在另一个人身上。

以上所有内容适用于Python 3.如果要在Python 2中运行它,则需要将这些print函数调用转换为print语句。对于我们使用默认换行结尾的简单情况,这只是删除括号的问题。但是当我们使用end=" "时,Python 2的print语句不会采用这样的关键字参数,因此您必须使用“魔术逗号”,这意味着使用空格而不是换行符。所以,例如,而不是:

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

你这样做:

print "+", i,

同样,对于Python 3,您不必担心这一点。 (此外,还有一些方法可以在Python 2和3中运行完全相同的代码 - 例如,使用sys.stdout.write - 如果您经常使用这两种语言,可能需要阅读这些代码。)

答案 1 :(得分:1)

你已经完成了大部分工作。我不确定为什么你认为你需要在循环中放置一个print语句。你只需要一个结果,对吗?你已经拥有了i%2 == 0 - 这是偶数的情况 - 并且你想根据当前的i是奇数还是偶数来加或减。因此,请保持运行计数,在每次循环迭代中添加或减少,并在最后打印计数。

答案 2 :(得分:1)

你看到奇数和偶数发生的情况之间存在差异,这很好。

因此,当您循环浏览列表时,如果数字是偶数,则执行一项操作,或其他执行其他操作。

计算完结果后,再将其打印出来。

答案 3 :(得分: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。其他人提供了很好的解释,这并不意味着

答案 4 :(得分:-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