当前位置: 首页 > 知识库问答 >
问题:

在Python中使用For Loop的累加器

蔡鹏程
2023-03-14

我的老师想要一个程序向用户询问一个正整数值,程序应该循环得到从1到输入的数字的所有整数的总和。使用Python进行循环。

这是我为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个答案

戚兴思
2023-03-14

你的程序中有一些致命的缺陷。见下文:

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
李昊苍
2023-03-14

如何实现如下内容。您的程序存在一些问题,最明显的是:1。对每个值重复打印总和2。您只需将1添加到总和,而不是添加整数i3。如果用户未输入正整数,则不会返回函数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()

这段代码可以进一步缩写,但是为了所有的意图和目的,您可能应该从尝试理解这个实现开始。

 类似资料:
  • 我使用的是Drools 7.6,出于某种原因,当只有unwatched属性发生更改时,@watch不会阻止规则重新激活自身或其他规则。这会导致无限循环。 有人能找出我做错了什么吗? 规则: 使用的模型来自Mastering JBoss Drools一书。方法增加折扣已用@Modifes注释。订单类:

  • 大家好,我有一个关于forloop和在forloop中将numericupdowns的可见性设置为true的问题。这就是我想要完成的: 这就是我想要做的: 这有可能吗?怎么做?事先谢谢你

  • import { Count } from 'feui'; components: { [Count.name]: Count } 代码演示 基础用法 <fe-group title="默认"> <fe-count name="数量" title="数量"></fe-count> </fe-group> 高级用法 <fe-group title="监听 on-change

  • 我有一段代码,可以很好地将API请求中的数据提取到特定站点。问题是,该网站只给了我50个对象的限制,每次调用,我必须作出多个调用。因此,完成抓取工作花费了我太长的时间(有时我不得不等待近20分钟)。这是我的密码: 问题是代码会一直运行,并等待所有操作完成后再发出另一个请求。我正在考虑一种改进,即当发送请求时,添加偏移量值,循环处理另一个请求,因此我不必等待。我不知道如何做到这一点,我学习了“asy

  • 挑战任务 初始文件index-start.html中提供了一个包含多个列表项的无序列表元素,每一个列表项均添加了data-time属性,该属性用分和秒表示了时间。要求将所有的时间累加在一起,并用时:分:秒来表示计算的结果。 实现效果 基本思路 1.取得所有li中data-time属性的值,将时间换算为秒并累加求得总时间(单位:秒); 2.手动计算将总时间转化为新的格式“XX小时XX分XX秒”; 3