-1
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)。似乎无法弄清楚问题所在。

4

1 回答 1

0

您的原始代码不会交换字符,因为您按顺序打印它们。您需要将第 th 个字符放在第i+1th 个字符之前,i以达到预期的效果。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"))
于 2020-10-28T19:51:55.427 回答