为了账号安全,请及时绑定邮箱和手机立即绑定

计算列表中特定整数组的总和

计算列表中特定整数组的总和

慕姐8265434 2022-09-13 19:14:09
因此,我对python非常陌生,并且我正在尝试制作一个基于文本的类似rpg的东西,该事物涉及具有2个出口(左侧或右侧)的第一个房间,之后的每行房间都有最后一个房间之和的整数量,每个变量都是从0到3(退出量)的随机整数, 这样:a = [2]print(a)import randomb = []for i in range(0,2):    x = random.randint(0,3)    b.append(x)print(b)b_sum = sum(b)import randomc = []for i in range(0,b_sum):    x = random.randint(0,3)    c.append(x)print(c)c_sum = sum(c)import randomd = []for i in range(0,c_sum):    x = random.randint(0,3)    d.append(x)print(d)d_sum = sum(d)import randome = []for i in range(0,d_sum):    x = random.randint(0,3)    e.append(x)print(e)e_sum = sum(e)import randomf = []for i in range(0,e_sum):    x = random.randint(0,3)    f.append(x)print(f)f_sum = sum(f)import randomg = []for i in range(0,f_sum):    x = random.randint(0,3)    g.append(x)print(g)这工作正常,但导航已被证明很难。rowlist = [a,b,c,d,e,f,g,h,ii]row = (rowlist[0])room = (a[0])print(room)if room == 2:    door=str(input("left or right"))    if door == "left":        roomsum = sum(row[row < room (+1)])我在这里试图做的是找到当前“房间”之前的列表中的每个整数的总和。但我不知道如何做到这一点!任何帮助将不胜感激,非常感谢!
查看完整描述

1 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

看起来你正在寻找这样的东西:


import random


big_list = [[2]]


for _ in range(1,5):  # increase to create more "rooms"

    big_list.append( [random.randint(0,3) for _ in range(sum(big_list[-1]))])


total = 0

for inner in big_list:

    print(inner, "before:", total)

    total += sum(inner) 

生成如下列表:


[2] before: 0

[3, 1] before: 2

[2, 3, 1, 1] before: 6

[1, 1, 2, 0, 2, 2, 2] before: 13

[2, 3, 0, 2, 3, 2, 2, 1, 0, 2] before: 23

由于随机性,您还可能得到:


[2] before: 0

[0, 1] before: 2

[0] before: 3

[] before: 3

[] before: 3

列表中的部分和可以通过 sum 或列表切片和 sum 中的生成器表达式获得:


lol = [[1,2,3], [4,5,6,7,8,9,10,11,12], [13,14,15,16,17]]


idx_in_lol   = 1      # [4,5,6,7,8,9,10,11,12]


idx_in_inner = 5      # [4,5,6,7,8,***9***,10,11,12]


# generator expression and enumerate     

s1 = sum( i if idx < idx_in_inner else 0 for idx,i in enumerate(lol[idx_in_lol]))


# or by slicing

s2 = sum( lol[idx_in_lol][:idx_in_inner] )


print(s1, s2) 

输出:


30 30 #  4+5+6+7+8 = 30


查看完整回答
反对 回复 2022-09-13
  • 1 回答
  • 0 关注
  • 75 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号