【问题标题】:How to combine individual characters in one string in python [duplicate]如何在python中将单个字符组合在一个字符串中[重复]
【发布时间】:2017-02-18 02:46:49
【问题描述】:

我有这样的代码:

def reverse(text):
    l=len(text)
    while ((l-1)!=0):
        print (str(text[l-1]))

        l=l-1
    print (str(text[0]))   

a=reverse("abc!de@fg")

输出是:

g
f
@
e
d
!
c
b
a

但我想将这些单独的字符组合起来,并希望输出如下:

gf@ed!cba 

【问题讨论】:

  • return text[::-1] 简单地用作reverse 函数会更容易,除非这是家庭作业或其他事情
  • 一个设计为return 的函数通常不包含print 语句。返回一个字符串。让函数的用户决定是否要打印返回值。

标签: python


【解决方案1】:
def reverse(text):
    if len(text) <= 1:
        return text
    return reverse(text[1:]) + text[0]
print (reverse('abc!de@fg'))

【讨论】:

  • 你需要连接每个字符。
【解决方案2】:

在 Python 中,反转 Sequence 的最简单方法是使用切片:

>>> string="abc!de@fg"
>>> print(string[::-1])
gf@ed!cba

切片会以相反的顺序为您提供序列的副本。

一般来说,你希望一个函数做一件事。返回一个值和打印一些输出是不同的关注点,所以它们不应该混在同一个函数中。如果您有一个返回反转字符串的函数,您可以简单地打印该函数:

print(reverse("abc"))

然后,您可以看到您的实际算法很好,即使不是完全 Pythonic:

def reverse(text):
    l=len(text)
    output = ""
    while ((l-1)!=0):
        output += (str(text[l-1]))
        l=l-1
    output +=(str(text[0]))
    return output

您现在可以清楚地看到它的打印功能。

【讨论】:

    【解决方案3】:

    反转字符串的最简单方法:

    In [1]: a = "abc!de@fg"
    
    In [2]: print(a[::-1])
    gf@ed!cba
    

    pythonprint 语句默认添加换行符。没有换行符的简单打印方法是

    sys.stdout.write('some text')
    # or
    print('some text', end='')
    

    【讨论】:

      【解决方案4】:

      嘿,尝试将打印值放入变量中并在最后打印。像这样。

      def reverse(text):
          l=len(text)
          output = ""
          while ((l-1)!=0):
              output += (str(text[l-1]))
      
              l=l-1
          output +=(str(text[0]))
      
          print output
      a=reverse("abc!de@fg")
      

      希望对你有帮助

      【讨论】:

        【解决方案5】:

        您需要将它们连接起来,然后打印字符串结果。

        这是因为函数print 会自动换行。

        解决方法是:

        def reverse(text):
               l = len(text)
               aux = ''
        
               while l-1 != 0:
                   aux += str(text[l-1])
                   l = l - 1
        
               print (aux)   
               a = reverse("abc!de@fg")`
        

        P.S:尽量避免多余的括号=)

        【讨论】:

        • @Wrong 答案的补充,如果没有返回,直接叫出来,不需要赋值
        【解决方案6】:

        要在每行末尾不换行打印,请执行以下操作:

        print('text', end='')
        

        要获取一个字符列表并将它们变成一个字符串,请执行以下操作:

        ''.join(list_of_characters)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-01-13
          • 1970-01-01
          • 2015-05-02
          • 2016-05-15
          • 1970-01-01
          • 1970-01-01
          • 2021-12-24
          相关资源
          最近更新 更多