我希望使用包含递归函数[保留]的随机模块将字符串的字母替换为其他字母

问题描述 投票:0回答:1

编写一个递归函数,该函数接受名称作为输入,并将名称中的每个字母替换为字母中的随机字母。例如,给定名称“ Anu”,您的函数可以返回“ Npx”。

如果字母是大写字母,则只能用大写字母替换,并且替换后的字母应采用这样的方式,使其位于字母表中现有字母之后。例如,“ Anu”可以是“ Bpw”,但不能是“ Bmt”。我希望代码应包含递归函数。这必须使用随机模块来选择字母。

import random
import string

name = input("Enter your name")
def replace(name):
    name = [i for i in name]
    for i in range(len(name)):
        name[i] = random.choice(string.ascii_lowercase)
        print(name[i], end="")

replace(name)

这是我尝试的代码。我希望它是一个递归函数。我的代码无法完全正常工作。我希望无论在哪里,都将递归函数包含在代码中。

recursion random python-3.6
1个回答
0
投票

这里是没有递归的解决方案:

import string
import random


# returns True if character is in UPPERCASE ; else False 
def is_uppercase(ch):
    # 65 --> 'A' && 90 --> 'Z'
    return (ord(ch) >= 65 and ord(ch) <= 90)

def generate_random_character(ch):
    lowercase_end = 122
    uppercase_end = 90

    if is_uppercase(ch):
        return chr(random.randrange(ord(ch)+1, uppercase_end+1))
    return chr(random.randrange(ord(ch)+1, lowercase_end+1))

if __name__ == "__main__":

    input_name = 'Abc'
    random_name = ""
    random_chars = []

    for character in input_name:
        rdm_ch = generate_random_character(character)
        random_chars.append(rdm_ch)

    # convert list to a string 
    print(random_name.join(random_chars))

Note:如果任何字符为z],此代码将无法处理

您必须弄清楚在此问题中在哪里使用递归。

© www.soinside.com 2019 - 2024. All rights reserved.