反向字符串Python
我希望从用户处获取输入,然后像这样反向打印字符串:反向字符串Python,python,string,python-3.x,Python,String,Python 3.x,我希望从用户处获取输入,然后像这样反向打印字符串: 输入: 你好 输出: oolollolleolleh 这是我的代码: s = input() for i in range(len(s) - 2, -1, -1): print(s[:i:-1]) 我收到的输出是: oolollolle 我总是错过最后一个角色。我尝试了许多不同的切片方法。我缺少什么?您必须首先获取子字符串,然后将其反转: s = "hello" for i in range(len(s)-1, -1, -1):
输入: 你好
输出:
o
ol
oll
olle
olleh
这是我的代码:
s = input()
for i in range(len(s) - 2, -1, -1):
print(s[:i:-1])
我收到的输出是:
ool
oll
olle
我总是错过最后一个角色。我尝试了许多不同的切片方法。我缺少什么?您必须首先获取子字符串,然后将其反转:
s = "hello"
for i in range(len(s)-1, -1, -1):
print(s[i:][::-1])
或:
或者反转单词并获取子字符串:
s = "hello"
for i, _ in enumerate(s):
print(s[::-1][:i+1])
最简单的可能是从
-1
向后迭代:
s = 'hello'
for i in range(1, len(s)+1):
print(s[-1: -i-1: -1])
hello
o
ol
oll
olle
olleh
按照这种方式,您将按顺序进行切片:
s[-1:-2:-1]
s[-1:-3:-1]
s[-1:-len(s)-1:-1]
s[::-1]
忽略第一个值。
因为这不适合您的迭代,所以您必须使用以下内容:
s = input()
for i in range(len(s) - 2, -1, -1):
print(s[:i:-1])
print(s[::-1])
我会这样做:
a = "Hello"
for i in range(len(a)):
print(a[-i-1])
这样,您就不需要处理字符串切片,只需要对字符串进行索引,并且没有一堆额外的数字来确定它们在做什么 您也可以简单地将整个内容反转,然后从一开始就将其切片打印出来,这样可以省去一些麻烦:
b = "hello" # your input
h = b[::-1] # inverse all - so this is now olleh
# list slicing is from:exclusive to - so simply add 1 to fit with the ranges values 0-4
for k in ( h[0:i+1] for i in range(0,len(h)) ):
print(k)
输出:
o
ol
oll
olle
olleh
反转字符串
s
的最基本方法是s[::-1]
(并保存它)
在另一个变量中,例如s2
)
然后,要按此字符串的递增部分(s2
)打印连续行,
您需要在范围(1,len(s2)+1)上进行循环
,说明s2的上限
(不包括在内)
因此,脚本可以如下所示:
s = 'hello'
s2 = s[::-1]
for i in range(1, len(s2)+1):
print(s2[:i])
这很好,但我不认为双字符串切片是严格必要的。@jpp为什么你认为双字符串切片是不正确的?它会产生什么问题?:-)将操作加倍:)。我不是说这是错的,只是。。没有必要。这是一个很酷的解决方案,但我认为没有必要使用比我更好的双slicingI。我认为这是最简单的解决方案。我真的很喜欢它,并没有真正考虑在for循环的末尾使用s[::-1],我只是试图通过迭代完全反转它。谢谢!:)不幸的是,这将不起作用,因为您没有定义任何切片。我明白了-我错过了整个单词向后的要求。此方法将按相反顺序分别打印每个字母。
s = 'hello'
s2 = s[::-1]
for i in range(1, len(s2)+1):
print(s2[:i])