gpt4 book ai didi

python - 给定一个字符串如何随机转置他们的两个字母?

转载 作者:行者123 更新时间:2023-11-28 20:31:45 27 4
gpt4 key购买 nike

给定一个字符串:

s = 'The quick brown fox jumps over the lazy dog'

我如何随机选择一个标记,交换该标记中的两个字母并返回包含修改后的标记的字符串?例如(*):

The quick brown fxo jumps over the lazy dog

在上面的示例中,标记 fox 是随机选择的,并且交换了两个字符。

到目前为止,我尝试过:

def swap_letters(string):
s = list(string)
s[0], s[len(s)-1] = s[len(s)-1].upper(), s[0].lower()
string = ''.join(s)
return string


def foo(a_string):
a_string_lis = a_string.split()
token = random.choice(a_string_lis)
return swap_letters(token)

但是,我得到了 2 个以上的字母转置,我不知道如何保持字符串中标记的顺序。知道如何以更 Pythonic 的方式获取 (*) 吗?

最佳答案

你可以这样做:

import random
random.seed(42)

s = 'The quick brown fox jumps over the lazy dog'


def transpose(text, number=2):

# select random token
tokens = text.split()
token_pos = random.choice(range(len(tokens)))

# select random positions in token
positions = random.sample(range(len(tokens[token_pos])), number)

# swap the positions
l = list(tokens[token_pos])
for first, second in zip(positions[::2], positions[1::2]):
l[first], l[second] = l[second], l[first]

# replace original tokens with swapped
tokens[token_pos] = ''.join(l)

# return text with the swapped token
return ' '.join(tokens)


result = transpose(s)
print(result)

输出

The iuqck brown fox jumps over the lazy dog

更新

对于长度为 1 的字符串,上面的代码失败了,像这样应该可以修复它:

def transpose(text, number=2):

# select random token
tokens = text.split()
positions = list(i for i, e in enumerate(tokens) if len(e) > 1)

if positions:

token_pos = random.choice(positions)

# select random positions in token
positions = random.sample(range(len(tokens[token_pos])), number)

# swap the positions
l = list(tokens[token_pos])
for first, second in zip(positions[::2], positions[1::2]):
l[first], l[second] = l[second], l[first]

# replace original tokens with swapped
tokens[token_pos] = ''.join(l)

# return text with the swapped token
return ' '.join(tokens)

关于python - 给定一个字符串如何随机转置他们的两个字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53835406/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com