python基础:位置互换

python 复制代码
n = int(input())
for _ in range(n):
    line = input().strip()
    line = list(line)
    for i in range(1,len(line)+1):
        if i%2 == 0:
            line[i-2], line[i-1] = line[i-1],line[i-2] 
    print(''.join(line))
        
   

以下分不同数据类型说明 Python 实现奇偶互换的方法:

字符串的奇偶位互换

若字符串长度为偶数,可通过遍历字符串,两两交换相邻字符实现。示例代码如下:

复制代码
def swap_odd_even_str(s):
    chs = list(s)
    for i in range(0, len(chs) - 1, 2):
        chs[i], chs[i + 1] = chs[i + 1], chs[i]
    return ''.join(chs)

# 测试
s = "python"
print(swap_odd_even_str(s))  # 输出:yptohn

这里先将字符串转为列表方便操作,range(0, len(chs) - 1, 2) 从索引 0 开始,每次步进 2 遍历,利用 Python 的多重赋值语法交换相邻字符,最后用 join() 方法将列表转回字符串。

若字符串长度为奇数,一般处理方式是除最后一个字符外,前面部分进行奇偶位互换:

复制代码
def swap_odd_even_str(s):
    chs = list(s)
    for i in range(0, len(chs) - 1 if len(chs) % 2 == 0 else len(chs) - 2, 2):
        chs[i], chs[i + 1] = chs[i + 1], chs[i]
    return ''.join(chs)

# 测试
s = "hello"
print(swap_odd_even_str(s))  # 输出:ehllo

列表的奇偶位置元素互换

对列表中索引为奇数和偶数位置的元素进行互换,示例代码如下:

复制代码
def swap_odd_even_list(lst):
    for i in range(1, len(lst), 2):
        lst[i - 1], lst[i] = lst[i], lst[i - 1]
    return lst

# 测试
lst = [1, 2, 3, 4, 5]
print(swap_odd_even_list(lst))  # 输出:[2, 1, 4, 3, 5]

range(1, len(lst), 2) 从索引 1 开始,每次步进 2,即遍历所有奇数索引位置,然后交换相邻的奇偶位置元素。

数值的奇偶性互换(将奇数变为偶数,偶数变为奇数 )

可以通过判断数值的奇偶性,然后进行相应运算实现。比如对整数加 1 或减 1:

复制代码
def swap_odd_even_num(num):
    if num % 2 == 0:
        return num + 1
    else:
        return num - 1

# 测试
num = 5
print(swap_odd_even_num(num))  # 输出:4
num = 6
print(swap_odd_even_num(num))  # 输出:7

这里先判断数字是否为偶数(num % 2 == 0 ),如果是则加 1;如果是奇数则减 1 ,从而实现奇偶性互换。

相关推荐
Cc.Y5 分钟前
Java零基础入门:字符串深度掌握——从基础API到StringBuilder性能优化
java·开发语言·性能优化
databook4 小时前
使用 SciPy 库进行时间序列分析
python·数据分析·scipy
java资料站4 小时前
十一、评估测试
开发语言·人工智能·python
szial4 小时前
网络爬虫与 CDP 实战(二):浏览器能访问,Python 却被拒绝?拆开登录态与 CSRF
爬虫·python·csrf
左手の明天5 小时前
SLIP 协议封装与解析详解:原理、C 代码与实战案例
linux·c语言·开发语言·c++
海上小飞龙5 小时前
【KMP算法-下篇】同一道题:Java 库函数 2600 微秒,手写 KMP 16 微秒
java·开发语言·算法
青少儿编程课堂5 小时前
后缀自动机解析:本质不同子串与最长重复片段统计
c++·python·算法·bfs·信息学竞赛
朝朝辞暮i5 小时前
C++ 第 12 课:局部变量、作用域、变量生命周期
开发语言·c++·算法
狗凯之家源码网5 小时前
淘客口令落地页生成器 PHP 版深度评测
开发语言·php
画绛集美术5 小时前
本地化部署LLM用于美术史问答:一间美术教室的实践记录
开发语言·php