Python打卡第二天,跟着CSDN练习语法

Python将列表中的指定位置的两个元素对调

# 定义一个列表,并将列表中的指定位置的两个元素对调

代码思路:

注:我一般使用函数的时候,我都会先定义主函数,根据主函数的需求,再去补全其他函数。每一个人写代码的习惯不同,我这样写,觉得不会落下东西,思路会更加的清晰。

①第一步,定义主函数,构建手动输入的数组

def main():
    # 输入数组
    list_1 = input("请输入数组(直接输入数字,不要空格!!!):")
    new_list = []
    for i in list_1.strip():
        new_list.append(int(i))
    print(f"您所设置的数组:{new_list}")

注:输入数组时,直接输入数字就可以。

       我想要实现的另一段代码(目前我的能力有限,还不能写出来,欢迎大家用自己的思路让这个案例更加完整):当输入的数组不符合条件时,应该有的应对措施。

 ②第二步,接下来设置指定位置的两个元素对调;

   # 输入交换的数字位数
    print("请输入的你想交换的数字位数!输入的数字小于列数组的长度!!!")
    # 通过while循环,来处理数字输入过大的情况
    while True:
        x = int(input("请输入第一个想要交换位置的元素:")) - 1
        y = int(input("请输入第二个想要交换位置的元素:")) - 1
        if x - 1 <= len(new_list) and y - 1 <= len(new_list):
            Duidiao = duidiao(new_list, x, y)
            print(f"列表中的指定位置的两个元素对调后:{Duidiao}")
            break
        else:
            print("您输入的数字不符合规范!请重新输入!(输入的数字小于列数组的长度!!!)")
            continue

注:输入的数字大于数组的长度,会导致程序无法进行。所以,面对输入过大的数字,我采取了应对措施:采用 while循环。

③第三步, 在以上主函数 main() 的书写中,涉及到了自定义对调函数(为了防止遗忘其功能,我一直都是采取汉语拼音的方式来自定义函数名,方便以后查看) duiiao() ,接下来,要设置其对调功能;

def duidiao(new_list, x, y):
    new_list[x], new_list[y] = new_list[y], new_list[x]
    return new_list

④第四步,测试函数。

if __name__ == '__main__':
    main()

注:全部代码如:

# Python将列表中的指定位置的两个元素对调

# 定义一个列表,并将列表中的指定位置的两个元素对调


def duidiao(new_list, x, y):
    new_list[x], new_list[y] = new_list[y], new_list[x]
    return new_list


def main():
    # 输入数组
    list_1 = input("请输入数组(直接输入数字,不要空格!!!):")
    new_list = []
    for i in list_1.strip():
        new_list.append(int(i))
    print(f"您所设置的数组:{new_list}")

    # 输入交换的数字位数
    print("请输入的你想交换的数字位数!输入的数字小于列数组的长度!!!")
    # 通过while循环,来处理数字输入过大的情况
    while True:
        x = int(input("请输入第一个想要交换位置的元素:")) - 1
        y = int(input("请输入第二个想要交换位置的元素:")) - 1
        if x - 1 <= len(new_list) and y - 1 <= len(new_list):
            Duidiao = duidiao(new_list, x, y)
            print(f"列表中的指定位置的两个元素对调后:{Duidiao}")
            break
        else:
            print("您输入的数字不符合规范!请重新输入!(输入的数字小于列数组的长度!!!)")
            continue


if __name__ == '__main__':
    main()

 结果1:

请输入数组(直接输入数字,不要空格!!!):45895
您所设置的数组:[4, 5, 8, 9, 5]
请输入的你想交换的数字位数!输入的数字小于列数组的长度!!!
请输入第一个想要交换位置的元素:1
请输入第二个想要交换位置的元素:2
列表中的指定位置的两个元素对调后:[5, 4, 8, 9, 5]

 结果2:

请输入数组(直接输入数字,不要空格!!!):5789
您所设置的数组:[5, 7, 8, 9]
请输入的你想交换的数字位数!输入的数字小于列数组的长度!!!
请输入第一个想要交换位置的元素:57
请输入第二个想要交换位置的元素:97
您输入的数字不符合规范!请重新输入!(输入的数字小于列数组的长度!!!)
请输入第一个想要交换位置的元素:3
请输入第二个想要交换位置的元素:2
列表中的指定位置的两个元素对调后:[5, 8, 7, 9]

 

注:案例的源代码如下:

# Python将列表中的指定位置的两个元素对调

# 定义一个列表,并将列表中的指定位置的两个元素对调

def SwapPosition(NumList, num1, num2):
    """
    元素对调
    """
    NumList[num1], NumList[num2] = NumList[num2], NumList[num1]
    return NumList


def main():
    # 请输入一串数组
    arr = input("请输入数组,每个数以空格分隔:")
    NumList = [int(n) for n in arr.split()]
    # 请输入要对调的位置
    print(f"请输入要对调的位置,从1开始,注意最大不能大于{len(NumList)}")
    num1 = int(input("请输入第一个位置:")) - 1
    num2 = int(input("请输入第二个位置:")) - 1

    # 对调元素
    SwapList = SwapPosition(NumList, num1, num2)

    # 打印对调后的数组
    print(SwapList)


if __name__ == '__main__':
    main()

 结果:

请输入数组,每个数以空格分隔:5 4 6 9
请输入要对调的位置,从1开始,注意最大不能大于4
请输入第一个位置:2
请输入第二个位置:3
[5, 6, 4, 9]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值