有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图。写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数。
时间: 2024-05-01 22:19:25 浏览: 42
python 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数(示例)
好的,我明白了。下面是函数实现:
```python
def shift_array(arr, m):
n = len(arr)
m %= n
arr.reverse()
arr[:m] = arr[:m][::-1]
arr[m:] = arr[m:][::-1]
arr.reverse()
return arr
```
其中,`arr`表示传入的整数列表,`m`表示顺序向后移动的位数。函数内部的操作步骤如下:
1. 计算出数组长度n和移动位数m对n取模后的余数,避免移动超过数组长度。
2. 将数组反转。
3. 将前m个数再次反转,变为原数组的后m个数。
4. 将剩下的(n-m)个数再次反转,还原为原数组的前(n-m)个数。
5. 将整个数组再次反转,恢复原来的顺序。
在主函数中,可以这样调用:
```python
n = int(input("请输入整数个数: "))
arr = []
for i in range(n):
arr.append(int(input("请输入第%d个整数: " % (i+1))))
m = int(input("请输入向后移动的位数: "))
new_arr = shift_array(arr, m)
print("调整后的整数列表: ", new_arr)
```
请注意,输出语句中的`new_arr`是调整后的数组。如果需要输出移动步骤中的翻转数组,可以在函数返回前添加下面这行代码:
```python
print("翻转后的数组: ", arr)
```
这样,就可以在输出结果中查看翻转后的数组。
阅读全文