在Python中使用For循环的累加器

时间:2015-02-18 20:33:17

标签: python for-loop

我的老师想要一个程序向用户询问一个正整数值,程序应该循环以获得从1到输入的编号的所有整数之和。在使用Python的For循环中。

这是我为For循环提出的内容,但是当我输入一个负数时它不会循环,当我输入一个负数后输入一个正数时它不会显示答案。

x=int(input("Please pick a positive integer"))
sum=0
for i in range(1,x):
    sum=sum+1
    print(sum)
else:
    x=int(input("Please pick a positive integer"))

帮助?

2 个答案:

答案 0 :(得分:2)

如何实现以下内容。您的计划存在一些问题,最明显

1。正在为每个值重复打印总和。

2。您只需在总和中加1,而不是添加整数i

3。如果您的用户未输入正整数,则不会返回您的函数。

4. 如果整数大于0,则没有if语句。

def intpicker():
        x=int(input("Please pick a positive integer"))
        sum=0
        if x >= 0:
            for i in range(1,x):
                sum=sum+i
            print(sum)
        else:
            return intpicker()

此代码可以进一步缩写,但是出于所有意图和目的,您应该尝试将此实现理解为一个开始。

答案 1 :(得分:1)

您的计划中存在一些致命缺陷。见下文:

x=int(input("Please pick a positive integer")) #what if the user inputs "a"
sum=0
for i in range(1,x): # this will not include the number that they typed in
    sum=sum+1 # you are adding 1, instead of the i
    print(sum) 
else:
    x=int(input("Please pick a positive integer")) # your script ends here without ever using the above variable x

这就是我可能做的事情:

while True: # enters loop so it keeps asking for a new integer
    sum = 0
    x = input("Please pick an integer (type q to exit) > ")
    if x == "q": # ends program if user enters q
        break
    else:
        # try/except loop to see if what they entered is an integer
        try:
            x = int(x)
        except:
            print "You entered {0}, that is not a positive integer.".format(x)
            continue
        for i in range(1, x+1): # if the user enters 2, this will add 1 and 2, instead of 1.
            sum += i 
        print sum