【问题标题】:how do I swap around characters from a given string? [duplicate]如何交换给定字符串中的字符? [复制]
【发布时间】:2021-02-11 05:49:41
【问题描述】:
def swap_adj(string):
    if len(string) % 2 == 1: 
        string = string[:-1]
    else:
        string = string
        for i in range (0, len(string), 2): print(string[i]+string[i+1], end= " ")    

我希望程序交换每对 2 个字符,所以如果我输入 (abcdef) 作为参数,那么它将输出 (badcfe)。似乎无法找出问题所在。

【问题讨论】:

  • 这里有一个提示:字符串切片可以通过使第三个参数为负来倒退。
  • 如果你想交换字符,你应该打印string[i+1] + string[i]而不是相反。

标签: python python-3.x


【解决方案1】:

您的原始代码不会交换字符,因为您按顺序打印它们。您需要将i+1th 字符放在ith 字符之前,以达到预期的效果。此外,由于if-else 语句的结构,您的代码不会为奇数长度的字符串输出任何内容。以下是您的代码的改进版本:

def swap_adj(string):
    if len(string) % 2 == 1: 
        string = string[:-1]
    for i in range (0, len(string), 2):
        print(string[i+1]+string[i], end='')
        
swap_adj("abcdef")

您的代码更简洁的版本如下:

def swap_adj(string):
    return "".join([j + i for i, j in zip(string[::2], string[1::2])])

print(swap_adj("abcdef"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多