编写一个递归函数,该函数接受名称作为输入,并将名称中的每个字母替换为字母中的随机字母。例如,给定名称“ 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)
这是我尝试的代码。我希望它是一个递归函数。我的代码无法完全正常工作。我希望无论在哪里,都将递归函数包含在代码中。
这里是没有递归的解决方案:
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
],此代码将无法处理
您必须弄清楚在此问题中在哪里使用递归。