使用递归在Python中将小写字母转换为大写字母

Posted

技术标签:

【中文标题】使用递归在Python中将小写字母转换为大写字母【英文标题】:Converting lowercase to uppercase in Python using recursion 【发布时间】:2022-01-16 16:33:50 【问题描述】:

我是一个对 Python 比较陌生的学生,通过课程学习它。我们有一个问题,我们有一个列表作为输入,我们必须将每个元素转换为大写。到目前为止,这是我的代码:

def strChange(lst):
    ch=''
    for i in range(len(lst)):
        if lst[i]>='a' and lst[i]<='z' :
            ch+=chr(ord(lst[i])-32)
    return ch
caps =  eval(input("Enter list: "))
caps2 = []
for i in range(len(caps)):
    a = strChange(caps[i])
    caps2.append(a)
print(caps2)

它完成了这项工作......但问题是,它没有使用递归!而且我完全不知道在哪里使用它!我对所有建议持开放态度,但首选外行的术语。

编辑:添加示例输入

输入:['rohit', 'mohan', 'anjali', 'ankit', 'akshit']

输出:['ROHIT', 'MOHAN', 'ANJALI', 'ANKIT', 'AKSHIT']

【问题讨论】:

这是一个愚蠢的递归用例。你确定那是任务?您的整个程序可以用一行替换。 你可以有嵌套列表吗? ['Rohit', ['Mohan', 'Anjali'], 'Ankit'] @TimRoberts 赞你。看到其他人同意,我很高兴!是的,这是一个非常愚蠢的用例。是的,这是任务。 @Majo 上帝我希望不是 【参考方案1】:

这很愚蠢,但这是你的做法。您处理一个字符并再次调用该函数以完成其余的。

def strChange(lst):
    if not lst:
        return ''
    ch = lst[0]
    if 'a' <= ch <= 'z':
        ch = chr(ord(ch)-32)
    return ch + strChange(lst[1:])
caps =  eval(input("Enter list: "))
for word in caps:
    print(strChange(word))

【讨论】:

【参考方案2】:

也许您可以在嵌套列表的情况下使用递归?如果列表中的项目是列表,你用它调用相同的函数吗?

def strChange(lst):
    for index, item in enumerate(lst):
        if type(item) is list:
            strChange(item)
        else:
            lst[index] = item.upper()
    return lst

【讨论】:

以上是关于使用递归在Python中将小写字母转换为大写字母的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Vim 中将所有文本转换为小写

在python中,如何将一个字符串中的小写字母全部转换为大写?

字符串中的大写字符不能转换为小写,减去它们的 ASCII 值不会使它们在字母索引中

一个包含大写和小写字母的字符串,要求在其后面加上最少的字符,使其成为一个回文串。

用破折号替换空格并使所有字母变为小写

python如何定义函数将小写转换为大写