如何在Python中将单个字符组合成一个字符串

5

我有这样的代码:

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 

5
除非这是一项作业任务或其他情况,否则将文本反转的最简单方法是仅使用return text[::-1] 作为您的 reverse 函数。 - Cory Kramer
3
一个旨在返回某个值的函数通常不会包含打印语句。请返回一个字符串,让函数的使用者决定是否要打印返回的值。 - John Coleman
6个回答

3

要在每行末尾没有换行符的情况下打印,请执行以下操作:

print('text', end='')

将字符列表合并为一个字符串,可以执行以下操作:

''.join(list_of_characters)

1

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

In [1]: a = "abc!de@fg"

In [2]: print(a[::-1])
gf@ed!cba

Python中的print语句默认会添加一个换行符。不换行打印的简单方法是:
sys.stdout.write('some text')
# or
print('some text', end='')

1
def reverse(text):
    if len(text) <= 1:
        return text
    return reverse(text[1:]) + text[0]
print (reverse('abc!de@fg'))

你需要将每个字符连接起来。 - Amitkumar Satpute

0
你需要将它们连接起来,然后打印字符串结果。
这是因为函数 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")`

附注:尽量避免冗余的括号 =)


除了@Wrong answer之外,如果没有返回值,只需调用它即可,不需要赋值。 - stars_point

0
嘿,试着把打印值放在变量中,在最后打印出来。像这样。
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")

希望这能有所帮助


0
在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

你现在可以清楚地看到,这是你的方式中的打印函数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接