在一个单词的每个字母之间打印随机字母

2024-09-30 00:26:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python3编写一个程序,它对一个文件执行许多操作,其中一个操作是在字符串中的每个单词之间添加随机数和字母。我希望随机字符不在单词的末尾,例如,对于单词Python:

P-y-t-h-o-n

其中-是随机字符的位置。 到目前为止,我已经:

def addCharacters(string, strength, randomLettersNumbers):
    newString = ''
    for c in string:
        letters = ''
        for k in range(strength):
            letters += random.choice(randomLettersNumbers)
        newString += c + letters
    return newString

其中strength是每个字母之间要打印的随机字符数,string是我正在打印的字母之间的随机字符数,randomLettersNumbers是我的随机字符列表。然而,它也将它们打印在单词的外端,比如-P-y-t-h-o-n-,我该如何修复它,使其只打印在单词的内端


Tags: 文件字符串in程序forstring字母字符
3条回答

只需在原始字符串的每个字母后添加随机字母和数字,但只需添加最后一个字母的情况除外。代码可能如下所示:

def addCharacters(string, strength, randomLettersNumbers):
    newString = ''
    n = len(string)
    for i in range(n-1):
        letters = ''
        for k in range(strength):
            letters += random.choice(randomLettersNumbers)
        newString += string[i] + letters
    newString += string[n-1]
    return newString

addCharacters("python", 2, ["X", "2"]) # 'pX2y22t22hX2oX2n'

你的问题有些不同,你需要的是在应用“addCharacters”之前用空格分隔单词

string = "This is a sentence"
array = string.split(" ")
newArray = [addCharacters(word, 1, ["a", "b", "c"]) for word in array]
newString = " ".join(newArray)
print(newString)

关注这一行:for c in string:

您的代码在字符串中的每个字母后插入额外内容,但看起来您需要在每个字母后插入额外内容,最后一个字母除外您需要一种方法来循环所有字符,最后一个除外;有几种方法可以做到这一点(例如,使用索引或列表切片,因为在Python中字符串有很多类似列表的行为)

在这一点上,我认为你不会在string的第一个字母之前看到随机字符。出于调试目的,硬编码随机字符而不是调用random.choice将有助于可视化正在发生的事情

我尝试了您的代码,似乎字符串前面插入的字符可能是由空格引起的。要避免在末尾插入随机字符,只需将字符串切片并在return语句中添加最后一个字符:

def addCharacters(string, strength, randomLettersNumbers):
    newString = ''
    for c in string[:-1]:
        letters = ''
        for k in range(strength):
            letters += random.choice(randomLettersNumbers)
        newString += c + letters
    return newString+string[-1]+' '

def processSentence(string,strength,randomLettersNumbers):
    return "".join([addCharacters(s,strength,randomLettersNumbers) for s in string.split()])

这段代码应该通过拆分句子来生成您想要的结果。然后对每个单词分别应用该方法,并在末尾添加空格。join()方法重新联接修改后的字符串

相关问题 更多 >

    热门问题