2024-03-29 12:47:08 发布
网友
我正在尝试下面的代码并期望输出为, 匹配字符串,其中每个偶数字母都是大写,每个奇数字母都是小写,但是我的输出是所有大写字符的列表。你知道吗
def myfunc(*args): return ''.join([args[i].upper() if i%2==0 else args[i].lower() for i in range(len(args))])
如何获得预期的输出?我尝试了相同的列表理解语法来测试,效果很好。这个特定代码有什么问题?你知道吗
问题是,您使用的是var args。这是用一个列表包装传递的字符串,然后在该列表上迭代(该列表只包含一个字符串)。这意味着你的代码在某种程度上可以工作;它只是交替使用每个单词的大小写而不是每个字符。你知道吗
去掉var参数:
def myfunc(word): return ''.join([word[i].upper() if i%2==0 else word[i].lower() for i in range(len(word))]) print(myfunc("hello world")) # HeLlo WoRlD
我要注意的是,有几种方法可以调试它。如果您检查了args的内容,就会发现当传递一个参数时它只包含一个元素,当传递两个参数时它只包含两个元素。如果你输入了两个参数,你也会注意到它把每个单词的大小写作为一个整体来交替。这可能会给你足够的线索让你弄明白。你知道吗
args
通过在函数声明中写入*args,这意味着您在迭代多个字符串,而不仅仅是一个字符串。例如:
*args
myfunc('hello', 'goodbye')
函数将在hello和goodbye上迭代,hello的索引为0,这是偶数,因此将其字符转换为大写,而goodbye的索引为1,这是奇数,因此将其字符转换为小写:
hello
goodbye
0
1
HELLOgoodbye
如果只希望为一个字符串调用函数,则必须从*args中删除*或逐个插入字符串的字符:
*
myfunc('h','e','l','l','o')
因此,函数的声明和实现应该如下所示:
def myfunc(args): return ''.join([args[i].upper() if i%2==0 else args[i].lower() for i in range(len(args))])
调用myfunc('hello')将返回正确的结果。你知道吗
myfunc('hello')
以上答案是正确的,但它们要求您修改当前语法。一般来说,你应该试着理解*args是如何工作的。 在python中,函数定义中的*args用于接收数量可变的参数。当我们事先不知道会通过多少个论点时,就会出现这种情况。 例如:
def myFun(*argv): for arg in argv: print (arg) myFun('Hello', 'Welcome', 'to', 'GeeksforGeeks')
现在回到您的代码,您可以通过从args列表中选择第一个参数来运行它。见下文:
def myfunc(*args): return ''.join([args[0][i].upper() if i%2==0 else args[0][i].lower() for i in range(len(args[0]))]) print(myfunc("input"))
通过选择这个问题的最佳答案来帮助社区。你知道吗
问题是,您使用的是var args。这是用一个列表包装传递的字符串,然后在该列表上迭代(该列表只包含一个字符串)。这意味着你的代码在某种程度上可以工作;它只是交替使用每个单词的大小写而不是每个字符。你知道吗
去掉var参数:
我要注意的是,有几种方法可以调试它。如果您检查了
args
的内容,就会发现当传递一个参数时它只包含一个元素,当传递两个参数时它只包含两个元素。如果你输入了两个参数,你也会注意到它把每个单词的大小写作为一个整体来交替。这可能会给你足够的线索让你弄明白。你知道吗通过在函数声明中写入
*args
,这意味着您在迭代多个字符串,而不仅仅是一个字符串。例如:函数将在
hello
和goodbye
上迭代,hello
的索引为0
,这是偶数,因此将其字符转换为大写,而goodbye
的索引为1
,这是奇数,因此将其字符转换为小写:如果只希望为一个字符串调用函数,则必须从
*args
中删除*
或逐个插入字符串的字符:因此,函数的声明和实现应该如下所示:
调用
myfunc('hello')
将返回正确的结果。你知道吗以上答案是正确的,但它们要求您修改当前语法。一般来说,你应该试着理解
*args
是如何工作的。在python中,函数定义中的
*args
用于接收数量可变的参数。当我们事先不知道会通过多少个论点时,就会出现这种情况。例如:
现在回到您的代码,您可以通过从
args
列表中选择第一个参数来运行它。见下文:通过选择这个问题的最佳答案来帮助社区。你知道吗
相关问题 更多 >
编程相关推荐