从数组的第0个元素开始,每次循环变量递增2,一直到数组的最后一个元素,将其累加到dum变量
时间: 2023-11-20 20:06:22 浏览: 78
好的,可以这样实现:
```python
dum = 0
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in range(0, len(arr), 2):
dum += arr[i]
print(dum)
```
输出结果为:
```
25
```
解释一下代码:
- `dum` 变量用来保存累加的结果,一开始为 0。
- `arr` 变量是给定的数组。
- `range(0, len(arr), 2)` 表示从 0 开始,每次递增 2,一直到数组的最后一个元素。这样我们就只访问数组中下标为偶数的元素。
- 在循环中,我们使用 `i` 变量来遍历数组,每次加上当前下标的元素值,最终得到累加结果。
相关问题
使用shell语言,编写一段脚本,按照以下要求 从txt文本里读取信息,并将数据写入txt文本 文本内容为:SML_SET_DUM(524288, 1, dum) pat P_MREG_PRAM_LOAD_UBM,Q1/Q2 = 524288/0->524289/0 pat P_MREG_PRAM_READ_ONE_WKRD_2,Q1/Q2 = 0/0->524212/4 SML_GET_DUM(0, 4, dum) 将第一行的524288 和 1 使用正则取出来 将第二行的 P_MREG_PRAM_LOAD_UBM 和 524288 0 524289 0 使用正则取出来 第三行的的 P_MREG_PRAM_READ_ONE_WKRD_2 和0 0 524212 4 使用正则取出来 第四行的 0 4 使用正则取出来
可以使用以下脚本来实现:
```
#!/bin/bash
# 读取文本内容
while read line; do
# 取出第一行的数字和1
if [[ $line =~ SML_SET_DUM\(([0-9]+),\s*1 ]]; then
echo "第一行数字是 ${BASH_REMATCH[1]},1"
fi
# 取出第二行的字符串和数字
if [[ $line =~ pat\s+(P_MREG_PRAM_LOAD_UBM),Q1/Q2\s*=\s*([0-9]+)/([0-9]+)->([0-9]+)/([0-9]+) ]]; then
echo "第二行字符串是 ${BASH_REMATCH[1]},数字是 ${BASH_REMATCH[2]} ${BASH_REMATCH[3]} ${BASH_REMATCH[4]} ${BASH_REMATCH[5]}"
fi
# 取出第三行的字符串和数字
if [[ $line =~ pat\s+(P_MREG_PRAM_READ_ONE_WKRD_2),Q1/Q2\s*=\s*([0-9]+)/([0-9]+)->([0-9]+)/([0-9]+) ]]; then
echo "第三行字符串是 ${BASH_REMATCH[1]},数字是 ${BASH_REMATCH[2]} ${BASH_REMATCH[3]} ${BASH_REMATCH[4]} ${BASH_REMATCH[5]}"
fi
# 取出第四行的数字
if [[ $line =~ SML_GET_DUM\(([0-9]+),\s*([0-9]+) ]]; then
echo "第四行数字是 ${BASH_REMATCH[1]},${BASH_REMATCH[2]}"
fi
done < input.txt
# 将数据写入文本
echo "写入数据"
echo "第一行的数字是 123,1" > output.txt
echo "第二行字符串是 P_MREG_PRAM_LOAD_UBM,数字是 524288 0 524289 0" >> output.txt
echo "第三行字符串是 P_MREG_PRAM_READ_ONE_WKRD_2,数字是 0 0 524212 4" >> output.txt
echo "第四行数字是 456,789" >> output.txt
```
其中,`input.txt`是输入文本,`output.txt`是输出文本。脚本首先读取输入文本的每一行,使用正则表达式取出需要的内容,并输出到终端。然后,将需要写入的数据写入到输出文本里。
使用shell语言,编写一段脚本,按照以下要求 并将数据写入txt文本 SML_SET_DUM(524288, 1, dum) pat P_MREG_PRAM_LOAD_UBM,Q1/Q2 = 524288/0->524289/0 pat P_MREG_PRAM_READ_ONE_WKRD_2,Q1/Q2 = 0/0->524212/4 SML_GET_DUM(0, 4, dum) 将第一行的524288 和 1 使用正则取出来 将第二行的 P_MREG_PRAM_LOAD_UBM 和 524288 0 524289 0 使用正则取出来 第三行的的 P_MREG_PRAM_READ_ONE_WKRD_2 和0 0 524212 4 使用正则取出来 第四行的 0 4 使用正则取出来
可以使用以下的脚本来实现:
```
#!/bin/bash
# 定义要处理的字符串
str="SML_SET_DUM(524288, 1, dum)
pat P_MREG_PRAM_LOAD_UBM,Q1/Q2 = 524288/0->524289/0
pat P_MREG_PRAM_READ_ONE_WKRD_2,Q1/Q2 = 0/0->524212/4
SML_GET_DUM(0, 4, dum)"
# 处理第一行
regex1="SML_SET_DUM\((\d+), (\d+), dum\)"
if [[ $str =~ $regex1 ]]; then
num1=${BASH_REMATCH[1]}
num2=${BASH_REMATCH[2]}
echo "$num1 $num2" >> data.txt
fi
# 处理第二行
regex2="pat\s+(P_MREG_PRAM_LOAD_UBM),Q1/Q2\s+=\s+(\d+)/(\d+)->(\d+)/(\d+)"
if [[ $str =~ $regex2 ]]; then
name=${BASH_REMATCH[1]}
num1=${BASH_REMATCH[2]}
num2=${BASH_REMATCH[3]}
num3=${BASH_REMATCH[4]}
num4=${BASH_REMATCH[5]}
echo "$name $num1 $num2 $num3 $num4" >> data.txt
fi
# 处理第三行
regex3="pat\s+(P_MREG_PRAM_READ_ONE_WKRD_2),Q1/Q2\s+=\s+(\d+)/(\d+)->(\d+)/(\d+)"
if [[ $str =~ $regex3 ]]; then
name=${BASH_REMATCH[1]}
num1=${BASH_REMATCH[2]}
num2=${BASH_REMATCH[3]}
num3=${BASH_REMATCH[4]}
echo "$name $num1 $num2 $num3" >> data.txt
fi
# 处理第四行
regex4="SML_GET_DUM\((\d+), (\d+), dum\)"
if [[ $str =~ $regex4 ]]; then
num1=${BASH_REMATCH[1]}
num2=${BASH_REMATCH[2]}
echo "$num1 $num2" >> data.txt
fi
```
这个脚本首先定义了要处理的字符串,然后使用正则表达式分别取出每行中需要的部分,并将结果写入到 `data.txt` 文件中。注意,这里使用了 Bash 的正则表达式匹配功能,需要将脚本保存为 .sh 文件,并在终端中使用 `bash script.sh` 命令来运行。
阅读全文