0

我将定义一个函数,它接受可变数量的字符串并检查每个字符串并替换/-. 然后将它们退回。(这是我的逻辑问题 - 返回什么?)

def replace_all_slash(**many):
    for i in many:
        i = i.replace('/','-')
    return many

这是对的吗?我怎样才能再次将字符串作为单独的字符串重新收集?

示例调用:

 allwords = replace_all_slash(word1,word2,word3)

但在调用函数之前,我需要allwords像它们一样是单独的字符串。这个怎么做?

我希望我清楚明白

4

4 回答 4

3

您想使用*args(一星)不**args

>>> def replace_all_slash(*words):
   return [word.replace("/", "-") for word in words]

>>> word1 = "foo/"
>>> word2 = "bar"
>>> word3 = "ba/zz"
>>> replace_all_slash(word1, word2, word3)
['foo-', 'bar', 'ba-zz']

然后,要将它们重新分配给相同的变量,请使用分配解包语法:

>>> word1
'foo/'
>>> word2
'bar'
>>> word3
'ba/zz'
>>> word1, word2, word3 = replace_all_slash(word1, word2, word3)
>>> word1
'foo-'
>>> word2
'bar'
>>> word3
'ba-zz'
于 2013-09-17T20:39:35.183 回答
1

解决方案一:创建一个新列表并附加:

def replace_all_slash(*many):
    result = []
    for i in many:
        result.append(i.replace('/','-'))
    return result

使用列表理解的解决方案二:

def replace_all_slash(*many):
    return [i.replace('/','-') for i in many]
于 2013-09-17T20:30:42.767 回答
1

你应该重写你的函数:

def replace_all_slash(*args):
    return [s.replace('/','-') for s in args]

你可以这样称呼它:

w1,w2,w3 = replace_all_slash("AA/","BB/", "CC/")
于 2013-09-17T20:39:18.583 回答
0

反汇编调用代码中的参数需要每个字符串的变量。

word1,word2,word3 = replace_all_slash(word1,word2,word3) 
于 2013-09-17T20:37:46.433 回答