使用递归在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中将小写字母转换为大写字母的主要内容,如果未能解决你的问题,请参考以下文章
在python中,如何将一个字符串中的小写字母全部转换为大写?
字符串中的大写字符不能转换为小写,减去它们的 ASCII 值不会使它们在字母索引中