我也是python的初学者,共同进步,哈哈
[Python] 纯文本查看 复制代码
'''
逻辑1(打枪法):
L = 元素1 + (元素1+元素2) +(元素1+元素2+元素3)+(元素1+元素2+元素3+元素4)+
元素2 + (元素2+元素3)+(元素2+元素3+元素4)+
元素3 + (元素3+元素4)+
元素4
'''
# 定义一个方法,计算数组arr中start项到end项的和(arr[start]和arr[end]都包含在内)
def sumArr(arr, start, end):
# 存储结算的总结果
total = 0
# 循环遍历数组内所有元素
for i in range(len(arr)):
# 判断当前元素是不是在给定范围内
if i >= start and i <=end:
# 如果在给定范围内的话就加起来
total = total + arr[i]
# 把最后的结果返回出去
return total
# 写法二
def sumArr2(arr, start, end):
# 存储结算的总结果
total = 0
# 循环遍历范围内所有元素
for i in range(start, end + 1):
total = total + arr[i]
# 把最后的结果返回出去
return total
# 目标数组
arr = [1, 4, 2, 3]
# 用于存储最后的结果
sum = 0
# 要注意的是,数组下标都是从 0 开始的
# 列出所有可能的情况,数组长度为4,那就是4种
for i in range(len(arr)):
# print('i:', i) # i 分别为0, 1, 2, 3
# len(arr) - i 就是每一次情况要加几次,例如:
'''
第一次循环要加4次:元素1 + (元素1+元素2) +(元素1+元素2+元素3)+(元素1+元素2+元素3+元素4)
第二次循环要加3次:元素2 + (元素2+元素3)+(元素2+元素3+元素4)
第三次循环要加2次:元素3 + (元素3+元素4
第四次循环要加1次:元素4
'''
# 而len(arr) - i ,就是在上一层循环后(0, 1, 2, 3)拼凑出要加的次数(3, 2, 1, 0)
for j in range(len(arr) - i):
# print('j:', j)
'''
分别加(数字代表下标)
0, 0-1, 0-1-2, 0-1-2-3 第一次循环就是从下标为0元素开始(start = 0)到下标为1,2,3(end = 0, 1, 2, 3)的元素相加,共四次
1, 1-2, 1-2-3 第二次循环就是从下标为1元素开始(start = 1)到下标为1,2,3(end = 1, 2, 3)的元素相加,共三次
2, 2-3 第三次循环就是从下标为2元素开始(start = 2)到下标为1,2,3(end = 2, 3)的元素相加,共二次
3 第四次循环就是从下标为2元素开始(start = 3)到下标为1,2,3(end = 3)的元素相加,共一次
'''
sum = sum + sumArr(arr, i, i+j)
print(sum)
|