关于Python:Python – 创建一个在字母之间添加“ – ”的函数

Python - making a function that would add “-” between letters

我想做一个函数,f(x),在每个字母之间加一个"-"

例如:

1
f("James")

应输出为:

1
J-a-m-e-s-

如果您能像我刚开始编程一样使用简单的python函数,我会很高兴的。事先谢谢。另外,请使用"for"函数,因为它是我要学习的。

编辑:

是的,我想把"-"跟在"s"后面。


我能试试这个吗?

1
2
3
4
5
6
>>> def f(n):
...     return '-'.join(n)
...
>>> f('james')
'j-a-m-e-s'
>>>

不确定是否需要最后一个"连字符"。

编辑:

即使你想要后缀'-',也可以这样做。

1
2
def f(n):
   return '-'.join(n) + '-'

作为学习者,重要的是要理解"最好在python中使用两个以上的字符串",即使用str.join(iterable),而+运算符可以在一个字符串后面附加另一个字符串。

请阅读以下文章进一步探讨:

  • 有没有理由不使用+来连接两个字符串?

  • 在python中,哪一个更适合concat字符串?

  • python的字符串连接与str.join相比有多慢?


Also, please use the"for" function because it is what I'm trying to learn

1
2
3
4
5
6
7
8
>>> def f(s):
        m = s[0]
        for i in s[1:]:
             m += '-' + i
        return m

>>> f("James")
'J-a-m-e-s'
  • 索引0处的m = s[0]字符分配给变量m

  • for i in s[1:]:从第二个字符迭代

  • m += '-' + i在变量m中追加-char

  • 最后返回变量EDOCX1的值〔7〕。

如果你最后想要-,那么你可以这样做。

1
2
3
4
5
6
7
8
>>> def f(s):
        m =""
        for i in s:
            m +=  i + '-'
        return m

>>> f("James")
'J-a-m-e-s-'


1
2
text_list = [c+"-" for c in text]
text_strung ="".join(text_list)

作为函数,接受一个字符串作为输入。

1
2
3
4
5
def dashify(input):
    output =""
    for ch in input:
        output = output + ch +"-"
    return output


假设您要求使用for和最终-的解决方案,只需迭代消息并将字符和"-"添加到中间列表中,然后将join添加到中间列表中。这样可以避免使用字符串串联:

1
2
3
4
5
6
7
8
>>> def f(message)
        l = []
        for c in message:
            l.append(c)
            l.append('-')
        return"".join(l)
>>> print(f('James'))
J-a-m-e-s-


我很抱歉,但我必须把亚历山大拉维科维奇的回答再进一步:

1
2
3
f = lambda text:"".join([c+"-" for c in text])

print(f('James'))  # J-a-m-e-s-

学习清单理解永远不会太早。

"".join(a_list)是不言而喻的:将列表的元素与字符串(本例中为空字符串)粘合在一起。

lambda…这只是定义一行函数的一种方法。思考

1
2
3
square = lambda x: x**2
square(2)  # returns 4
square(3)  # returns 9

python很有趣,它不是enter-a-boring-programming-language-here。