鱼C论坛

 找回密码
 立即注册
查看: 1845|回复: 8

[已解决]如何将多个累加结果累加?

[复制链接]
发表于 2017-10-13 11:35:05 | 显示全部楼层 |阅读模式
5鱼币
  1. print( "输入一个整数,程序可以自动计算出1到这个整数的所有整数的和,\n类似:1+2+3+...+n="  )
  2. print  
  3. n = int(input("输入一个整数:"))  
  4. sum1 = 0  
  5. str1 = ""

  6. for i in range(1,n+1):  
  7.     sum1 = sum1 + i          #累加和  
  8.     str1 = str1 + str(i)     #输出结果控制,形式类似:1+2+3+4+5+=15  
  9.     if i != n:               #控制n后面那个+号  
  10.         str1 = str1 + "+"
  11.                            
  12.                         
  13. print (str1,"=",sum1)  
复制代码

我要实现的是sum1=1 + (1 + 2) + (1 + 2 + 3) + … + (1 + 2 + 3 + … + n)这种效果,我猜测应该是在套一层循环,但是具体该怎么做?
最佳答案
2017-10-13 11:35:06
  1. def add_num(n):
  2.   result = ''
  3.   for i in range(1,n+1):
  4.     each = '('+'+'.join(map(str,list(range(1,i+1))))+')' if i>1 else '1'
  5.     result += each +'+'
  6.   result = result[:-1]
  7.   print(result+'='+str(eval(result)))
复制代码


结果:
add_num(10)
1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+4+5)+(1+2+3+4+5+6)+(1+2+3+4+5+6+7)+(1+2+3+4+5+6+7+8)+(1+2+3+4+5+6+7+8+9)+(1+2+3+4+5+6+7+8+9+10)=220

最佳答案

查看完整内容

结果: add_num(10) 1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+4+5)+(1+2+3+4+5+6)+(1+2+3+4+5+6+7)+(1+2+3+4+5+6+7+8)+(1+2+3+4+5+6+7+8+9)+(1+2+3+4+5+6+7+8+9+10)=220
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-10-13 11:35:06 | 显示全部楼层    本楼为最佳答案   
  1. def add_num(n):
  2.   result = ''
  3.   for i in range(1,n+1):
  4.     each = '('+'+'.join(map(str,list(range(1,i+1))))+')' if i>1 else '1'
  5.     result += each +'+'
  6.   result = result[:-1]
  7.   print(result+'='+str(eval(result)))
复制代码


结果:
add_num(10)
1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+4+5)+(1+2+3+4+5+6)+(1+2+3+4+5+6+7)+(1+2+3+4+5+6+7+8)+(1+2+3+4+5+6+7+8+9)+(1+2+3+4+5+6+7+8+9+10)=220
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-10-13 12:42:32 | 显示全部楼层
本帖最后由 xindong 于 2017-10-13 13:27 编辑

试试这个

# -*- coding: utf-8 -*-
"""
Created on Fri Oct 13 11:54:53 2017

"""

print( "输入一个整数,程序可以自动计算出1到这个整数的所有整数的和,\n类似:1+(1+2)+(1+2+3)+...+(1+2+3+...+n)="  )
print  
n = int(input("输入一个整数:"))  

sumx=0;
str1=''
for i in range(1,n+1):
    for j in range(1,i+1):
        if(j==1 and i==1):
          str1=str(j)
        else:
            if(j==1):
                str1=str1 +'+('+str(j)
            elif (j==i):
                str1=str1 +'+'+ str(j)+')'
            else:
                str1=str1+'+'+str(j)
    sumx=sumx+sum([k for k in range(1,i+1)])
print(str1+' =',sumx)


评分

参与人数 1荣誉 +3 鱼币 +3 贡献 +3 收起 理由
ylyl + 3 + 3 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-10-13 12:51:13 | 显示全部楼层
  1. print( "输入一个整数,程序可以自动计算以下结果:\n 类似:1 + (1 + 2) + (1 + 2 + 3) + … + (1 + 2 + 3 + … + n)="  )

  2. n = int(input("输入一个整数:"))  


  3. if n == 1:
  4.     str2 = '1'
  5.     sum2 = 1
  6. else:
  7.     sum2 = 1
  8.     str2 = "1"
  9.     for j in range(2, n+1):
  10.         str2 = str2 + ' + ('
  11.         sum1 = 0  
  12.         str1 = ""
  13.         for i in range(1,j+1):  
  14.             sum1 = sum1 + i          #累加和  
  15.             str1 = str1 + str(i)     #输出结果控制,形式类似:1+2+3+4+5+=15  
  16.             if i != j:               #控制n后面那个+号  
  17.                 str1 = str1 + "+"
  18.         sum2 = sum2 + sum1
  19.         str2 = str2 + str1 + ')'                        
  20.                        
  21. print (str2,"=",sum2)  
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 贡献 +2 收起 理由
ylyl + 3 + 3 + 2

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-10-13 13:03:04 | 显示全部楼层
  1. print("请输入一个整数n,程序自动计算出1到n的所有整数循环的和,\n类似:1+(1+2)+(1+2+3)+... = ")
  2. n = input("n = ")
  3. print()

  4. sum0 = 0
  5. lst2 = []

  6. for j in range(1,int(n)+1):
  7.     lst1 = []
  8.     sum1 = 0
  9.     for i in range(1,j+1):
  10.         sum1 += i
  11.         lst1.append(str(i))

  12.     sum0 += sum1
  13.     if len(lst1) == 1:
  14.         str1 = "+".join(lst1)
  15.     else:
  16.         str1 = "("+"+".join(lst1)+")"
  17.     lst2.append(str1)
  18.    
  19. print("+".join(lst2),"=",sum0)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
ylyl + 3 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-10-13 13:17:59 | 显示全部楼层
xindong 发表于 2017-10-13 12:42
试试这个

# -*- coding: utf-8 -*-

谢谢回复。
sumx=sumx+sum(aa[0:i])这里‘aa’报错,不是很清楚sum这里的意思。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-10-13 13:27:42 | 显示全部楼层
ylyl 发表于 2017-10-13 13:17
谢谢回复。
sumx=sumx+sum(aa[0:i])这里‘aa’报错,不是很清楚sum这里的意思。

已经修改了代码,原来那个是调试的时候用的,抱歉了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-10-13 14:43:04 | 显示全部楼层
  1. def add_num(n):
  2.     return int(sum(map(lambda x:(x+1)*x/2,range(1,n+1))))
  3. print(add_num(10))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-10-13 19:12:56 | 显示全部楼层
gopythoner 发表于 2017-10-13 11:35
结果:
add_num(10)
1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+4+5)+(1+2+3+4+5+6)+(1+2+3+4+5+6+7)+(1+2+3+ ...

综合来看最为简洁的代码。谢谢解答。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-3 02:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表