Python自定义函数中如何对sorted结果调用upper()转全大写
代码问题点
- 你写的
for x in args循环没有实际作用,进入循环第一次迭代就会执行return sorted(args)直接退出函数,根本没对单个传入的参数做处理。 - 直接返回
sorted(args)只会对原始字符串做排序,没有调用.upper()方法处理每个姓名的大小写。
修正方案
你只需要先遍历所有传入参数,把每个姓名字符串转为大写后,再做排序返回即可,两种写法都可以:
写法1:保留for循环逻辑(匹配你原本的代码思路)
def names(*args): upper_names = [] for x in args: upper_names.append(x.upper()) return sorted(upper_names) print(names("john", "allison", "tony", "melissa"))
写法2:简洁生成器写法
def names(*args): return sorted(name.upper() for name in args) print(names("john", "allison", "tony", "melissa"))
运行后输出结果为:
['ALLISON', 'JOHN', 'MELISSA', 'TONY']
同时实现姓名排序、全大写转换的需求。
内容的提问来源于stack exchange,提问作者Haris Bade
相关产品推荐
相关产品推荐

