鱼C论坛

 找回密码
 立即注册
查看: 2179|回复: 22

[已解决]请各位大神们指教

[复制链接]
发表于 2020-7-23 09:40:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
list_1=[]
sum=0
for i in range(0,101):          
    sum+=i
    print(sum)
    list_1.append(sum)
    if i==100:
        print(list_1)
    


算出0~100的累加和,将for里的每一次的累加值,全部归纳进列表 list_1 中。有没有更简单的代码,想请问各位一次到位的那种。
最佳答案
2020-7-23 10:08:24
Congratulate 发表于 2020-7-23 10:04
其实我想要的代码结果效果是这样的[0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136 ...

result =[sum(range(i+1)) for i in range(0, 101)]
print(result)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-23 09:41:12 | 显示全部楼层

一次到位:
print(sum(range(0, 101)))
或者:
result = list(range(0, 101))
print(sum(result))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-23 09:46:02 | 显示全部楼层
Twilight6 发表于 2020-7-23 09:41
一次到位:

或者:

交互模式下运行就只有5050.但我不是交互模式,我运行完后是 'int' object is not callable 这个错误。这是为什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-23 09:47:04 | 显示全部楼层
Congratulate 发表于 2020-7-23 09:46
交互模式下运行就只有5050.但我不是交互模式,我运行完后是 'int' object is not callable 这个错误。这 ...


代码中你把 sum  赋值了 , 你把 sum 变量改成其他名即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-23 09:49:04 | 显示全部楼层
Twilight6 发表于 2020-7-23 09:47
代码中你把 sum  赋值了 , 你把 sum 变量改成其他名即可

具体是怎么个操作呢,能不能给串代码。我不是很懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-23 09:53:12 | 显示全部楼层
Congratulate 发表于 2020-7-23 09:46
交互模式下运行就只有5050.但我不是交互模式,我运行完后是 'int' object is not callable 这个错误。这 ...

重新打开 IDLE 再重试一遍
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-23 09:53:43 | 显示全部楼层
Twilight6 发表于 2020-7-23 09:49
那你发上你运行报错的完整代码

我就裸运行了你给我的那两串,两个都是报一样的错误。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-23 09:54:20 | 显示全部楼层
Congratulate 发表于 2020-7-23 09:53
我就裸运行了你给我的那两串,两个都是报一样的错误。

输入 del sum ,然后再运行就好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-23 09:58:33 | 显示全部楼层
Twilight6 发表于 2020-7-23 09:54
输入 del sum ,然后再运行就好

出这个错误了NameError: name 'sum' is not defined
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-23 10:00:21 | 显示全部楼层
zltzlt 发表于 2020-7-23 09:53
重新打开 IDLE 再重试一遍

一样的,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-23 10:04:15 | 显示全部楼层
Twilight6 发表于 2020-7-23 09:59
那你重启 IDLE ,运行我的代码不要运行你的

其实我想要的代码结果效果是这样的[0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275, 1326, 1378, 1431, 1485, 1540, 1596, 1653, 1711, 1770, 1830, 1891, 1953, 2016, 2080, 2145, 2211, 2278, 2346, 2415, 2485, 2556, 2628, 2701, 2775, 2850, 2926, 3003, 3081, 3160, 3240, 3321, 3403, 3486, 3570, 3655, 3741, 3828, 3916, 4005, 4095, 4186, 4278, 4371, 4465, 4560, 4656, 4753, 4851, 4950, 5050]。你那个最多给我一个5050.然后刚刚也重启了,还是一样的错误 NameError: name 'sum' is not defined
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-23 10:04:48 | 显示全部楼层
print(list((sum(i for i in range(j))for j in range(1,102))))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-7-23 10:06:21 | 显示全部楼层
Twilight6 发表于 2020-7-23 09:59
那你重启 IDLE ,运行我的代码不要运行你的

featList = [example[i] for example in dataSet]
classList = [example[-1] for example in dataSet]
这两串代码是我自己找的,但看不太懂,能详细解释下么,最好通俗易懂点,太专业术语听不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-23 10:07:23 | 显示全部楼层
Twilight6 发表于 2020-7-23 10:02
???你确定是复制我代码运行,我这里完全正常,到你那就出了问题

你只计算了0~100求和了。
他要的是把0~100各项求和都计算出来,即0~1,0~2,0~3,……,0~100
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-7-23 10:08:24 | 显示全部楼层    本楼为最佳答案   
Congratulate 发表于 2020-7-23 10:04
其实我想要的代码结果效果是这样的[0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136 ...

result =[sum(range(i+1)) for i in range(0, 101)]
print(result)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-7-23 10:08:33 | 显示全部楼层

对,你这个可以的。你这个是套了两个for么?能详细解释下吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-23 10:09:49 | 显示全部楼层
Congratulate 发表于 2020-7-23 10:04
其实我想要的代码结果效果是这样的[0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136 ...

你没说清楚...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-23 10:11:32 | 显示全部楼层

这次可以了,能详细解释下你的代码么,原来for前面能加参数吗?能给我通俗易懂点的叙述下么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-23 10:12:15 | 显示全部楼层

我的问题,原谅我是小白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-23 10:12:58 | 显示全部楼层
Congratulate 发表于 2020-7-23 10:11
这次可以了,能详细解释下你的代码么,原来for前面能加参数吗?能给我通俗易懂点的叙述下么?


这个是列表推导式,实际上展开来就是这样的:
result = []
for i in range(0,101):
    result.append(sum(range(i+1)))
print(result)

result = [sum(range(i+1)) for i in range(0, 101)]

就是每次循环的 i ,将 for 前面的计算结果保留在 result 列表中

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 08:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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