鱼C论坛

 找回密码
 立即注册
查看: 4682|回复: 20

数列编程

[复制链接]
发表于 2023-3-13 14:24:41 | 显示全部楼层 |阅读模式

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

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

x
请教高手指教下这道数列编程题,十分感谢!
序列查找.PNG
序列查找1.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-13 16:50:35 | 显示全部楼层
初学者互谅互让
a=[[],[],[],[0,0,0]]
for i in range(3):
    a[i]=[int(x) for x in input().split(' ')]
alen=[len(a[0]),len(a[1]),len(a[2])]
i=0
sum=0
while i<alen[0] or i<alen[1] or i<alen[2]:
    if i<alen[0]:
        a[3][0]=a[0][i]
    else:
        a[3][0]=0
    if i<alen[1]:
        a[3][1]=a[1][i]
    else:
        a[3][1]=0
    if i<alen[2]:
        a[3][2]=a[2][i]
    else:
        a[3][2]=0
    sum+=max(max(a[3][0],a[3][1]),a[3][2])
    i+=1
print(sum)
6 8 1 5 2 3 5 3 7 9
7 6 2 9
9 3 4 6 1 8 6 4 2 8 4
70
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-13 19:33:07 From FishC Mobile | 显示全部楼层
def arraysum(nums):
        max_list = []
        nums = [i.split(' ') for i in nums.split('\n')]
        for i, value in enumerate(nums):
                while  len(value) < max([len(v) for v in nums]):
                        nums[i].append(0)
       
        for i in range(0, len(nums), 3):
                num = nums[i:i + 3]
               
                for j in range(len(num[0])):
                                max_list.append(max([int(i[j]) for i in num]))
                               
        return sum(max_list)
       


nums = "1 3 5\n2 4 6 8\n7 2 9"

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

使用道具 举报

 楼主| 发表于 2023-3-14 08:58:14 | 显示全部楼层
jhq999 发表于 2023-3-13 16:50
初学者互谅互让

麻烦能够解释下每行代码的作用吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-14 08:58:58 | 显示全部楼层
君无泪 发表于 2023-3-13 19:33
def arraysum(nums):
        max_list = []
        nums =

麻烦解释下每行代码的作用!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-14 09:41:28 | 显示全部楼层
nbwubo 发表于 2023-3-14 08:58
麻烦能够解释下每行代码的作用吗?

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

使用道具 举报

 楼主| 发表于 2023-3-14 11:45:34 | 显示全部楼层

a=[[],[],[],[0,0,0]] 第一条是创建三个空数组吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-14 12:23:40 | 显示全部楼层
nbwubo 发表于 2023-3-14 11:45
a=[[],[],[],[0,0,0]] 第一条是创建三个空数组吗?

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

使用道具 举报

 楼主| 发表于 2023-3-14 14:07:38 | 显示全部楼层

for 循环是接受用户输入三组列表,并存储下来?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-14 16:38:35 | 显示全部楼层
本帖最后由 jhq999 于 2023-3-14 16:45 编辑
nbwubo 发表于 2023-3-14 14:07
for 循环是接受用户输入三组列表,并存储下来?


没错,是把字符串按空格切片后以整数形式保存下来
a=[[],[],[],[0,0,0]]
for i in range(3):
    a[i]=[int(x) for x in input().split(' ')]
alen=[len(a[0]),len(a[1]),len(a[2])]#三个子列表的长度
i=0
sum=0
while i<alen[0] or i<alen[1] or i<alen[2]:#为了以最长列表循环
    if i<alen[0]:#i小于子列表长度让列表元素a[0][i]赋值给a[3][0],i大于等于列表长度a[3][0]赋值为0,下面同理
        a[3][0]=a[0][i]
    else:
        a[3][0]=0
    if i<alen[1]:
        a[3][1]=a[1][i]
    else:
        a[3][1]=0
    if i<alen[2]:
        a[3][2]=a[2][i]
    else:
        a[3][2]=0
    sum+=max(max(a[3][0],a[3][1]),a[3][2])//在a[3][0],a[3][1],a[3][2]中找最大的和sum相加再赋值给sum
    i+=1
print(sum)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-14 19:32:31 From FishC Mobile | 显示全部楼层
nbwubo 发表于 2023-3-14 08:58
麻烦解释下每行代码的作用!

def arraysum():
        nums = []
        maxsum = 0
        # 获取用户输入并转为字符串数组
        while len(nums) <3:
                strarray = [i for i in input().split(' ')]
                nums.append(strarray)

        # 遍历字符串数组 nums,对子列表长度小于子列表最大长度的列表进行补0
        for index, value in enumerate(nums):
                while  len(value) < max([len(v) for v in nums]):
                        nums[index].append(0)
       
        # 按列获取列表中的元素并转为int类型找出每一列的最大值进行求和
        for j in range(len(nums[0])):
                maxsum += max([int(i[j]) for i in nums])
                               
        return maxsum

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

使用道具 举报

 楼主| 发表于 2023-3-15 14:35:21 | 显示全部楼层
jhq999 发表于 2023-3-14 16:38
没错,是把字符串按空格切片后以整数形式保存下来

数字之间的空格怎么判断的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-15 14:42:05 | 显示全部楼层
nbwubo 发表于 2023-3-15 14:35
数字之间的空格怎么判断的?

split函数根据你给的参数判断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-16 13:28:53 | 显示全部楼层
君无泪 发表于 2023-3-14 19:32
def arraysum():
        nums = []
        maxsum = 0

# 遍历字符串数组 nums,对子列表长度小于子列表最大长度的列表进行补0
补0 的作用是来比较这一列的最大数吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-16 13:34:00 | 显示全部楼层
jhq999 发表于 2023-3-14 16:38
没错,是把字符串按空格切片后以整数形式保存下来

while 循环的作用是遍历3行数组,来比对每一列的最大数?
变量i 和 变量 sum 主要存储那些数字?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-16 16:16:17 | 显示全部楼层
本帖最后由 jhq999 于 2023-3-16 16:18 编辑
nbwubo 发表于 2023-3-16 13:34
while 循环的作用是遍历3行数组,来比对每一列的最大数?
变量i 和 变量 sum 主要存储那些数字?

对,对比选出三个列表每列最大的数
i数列的下标,sum每列最大数的和
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-16 18:10:49 From FishC Mobile | 显示全部楼层
nbwubo 发表于 2023-3-16 13:28
# 遍历字符串数组 nums,对子列表长度小于子列表最大长度的列表进行补0
补0 的作用是来比较这一列的最 ...

嗯,把所以子列表的长度对齐。这边方便按索引来取值进行对比。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-23 09:13:23 | 显示全部楼层
jhq999 发表于 2023-3-14 16:38
没错,是把字符串按空格切片后以整数形式保存下来

a[3][0], a[3][1],a[3][2] 作用是啥?切片用法吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-23 12:38:42 | 显示全部楼层
本帖最后由 jhq999 于 2023-3-23 12:40 编辑
nbwubo 发表于 2023-3-23 09:13
a[3][0], a[3][1],a[3][2] 作用是啥?切片用法吗?


储存三个列表每个列的值,超过列表长度赋值为零,为了后面同列取最大
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-23 13:01:33 | 显示全部楼层
jhq999 发表于 2023-3-23 12:38
储存三个列表每个列的值,超过列表长度赋值为零,为了后面同列取最大

[0] ,[1], [2] 分别表示第一,第二,第三个列表?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 05:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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