定义一个函数,将n个数前半部分和后半部分互换。n为奇数时,中间的数不移动,示例运行结果如下。
请输入多个数据:1,2,3,4,5
对换后:
45312
提示:1、定义函数:
首先利用运算符//找到中间位置;此中间
位置的作用有两个,一是需要互换的次数,可以结合range()函数构造循环,控制互换次数。二是参与下标定位互换的数据。
利用if语句,判断n是偶数还是奇数,因为这两种情况下,需要交换的数据下标不一样,需要分别处理。2、将输入的多个数据作为列表赋值给变量,之前定义的函数将接受列表作为参数。
3、调用函数完成互换
4、用for循环输出互换后的列表中的数据即可。
用Python
def swap_list(input_list):
length = len(input_list)
if length % 2 == 0:
# 如果列表长度为偶数,直接前半部分和后半部分互换
for i in range(length//2):
input_list[i], input_list[i+length//2] = input_list[i+length//2], input_list[i]
else:
# 如果列表长度为奇数,中间的数不动,前半部分和后半部分互换
for i in range(length//2):
input_list[i], input_list[i+length//2+1] = input_list[i+length//2+1], input_list[i]
#输出互换后的列表中的数据
for i in input_list:
print(i, end='')
#测试代码
test_list = [1, 2, 3, 4, 5]
swap_list(test_list)
lst=eval('['+input()+']')
print(lst[::-1])
不用来回交换数据吧,直接切片不就行了吗
lst = [1, 2, 3, 4, 5]
def newsort(lst):
m = len(lst) // 2
front_half = lst[0:m:1]
back_half = lst[-m::1]
if len(lst) % 2 == 1:
mid_num = lst[m]
back_half.append(mid_num)
back_half.extend(front_half)
return back_half
print(newsort(lst))