如何在python中将单个字符组合在一个字符串中[重复]
Posted
技术标签:
【中文标题】如何在python中将单个字符组合在一个字符串中[重复]【英文标题】:How to combine individual characters in one string in python [duplicate] 【发布时间】: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
语句。返回一个字符串。让函数的用户决定是否要打印返回值。
【参考方案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)
【讨论】:
以上是关于如何在python中将单个字符组合在一个字符串中[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 中将单个字符转换为其十六进制 ASCII 值?