Python 循环打印名称,一次删除一个字符

Python 循环打印名称,一次删除一个字符,python,for-loop,Python,For Loop,我在创建一个向下打印用户名的程序时遇到了一点问题,该程序总是在每行删除第一个字符,然后在最后一个字母处再次向上打印 这就是我到目前为止所做的: name = input("Put in a name: ") name_length = len(name) for counter in range(name_length,0, -1): print(counter) 下面是它应该结束的样子 我认为它会起作用: name = input("Put in a name: ") fo

我在创建一个向下打印用户名的程序时遇到了一点问题,该程序总是在每行删除第一个字符,然后在最后一个字母处再次向上打印

这就是我到目前为止所做的:

name = input("Put in a name: ")
name_length = len(name)

for counter in range(name_length,0, -1):    
    print(counter)
下面是它应该结束的样子

我认为它会起作用:

name = input("Put in a name: ")
for i in range(len(name)):          # for 1st half
    print(name[i:])
for i in range(len(name)-2,-1,-1):  # for 2nd half
    print(name[i:])
输入:

stack
stack
tack
ack
ck
k
ck
ack
tack
stack
输出:

stack
stack
tack
ack
ck
k
ck
ack
tack
stack
我将输出分成两部分:

上半年:

stack
tack
ack
ck
k
这将通过使用Slice的第1个
循环来实现(检查以了解更多信息)

下半场:

ck
ack
tack
stack
注意:在本例中,您可以像我一样在第1个
循环中为
打印单个字符,或者在第2个
循环中为
打印单个字符,这取决于您

希望这有帮助


虽然我认为您应该使用@Andrew建议的解决方案,但如果您在他的解决方案中打印一个
,您会得到序列
[0,1,2,3,4,3,2,1,0]
来切片字符串,这样就可以在单个
中完成
循环

这是一种只使用单个循环和切片来实现相同目的的方法。它创建了一个索引列表,从该索引开始切片,然后在打印过程中逐步完成该列表

name = "Bilbo"

a = range(len(name))
a = a[:-1] + a[::-1]

for idx in a:
    print name[idx:]
递归回答

从本质上讲,打印同一字符串两次,但在此期间再次调用函数,但删除第一个字符。当起始索引大于字符串-1的长度时,则剩下一个字符

def printer(str, start=0):
    s = str[start:]
    if len(str) - 1 <= start:
        print s
        return
    print s
    printer(str, start + 1)
    print s

nafn在任何地方都没有定义。不要打印计数器本身——打印字符串的切片,其中切片的大小由计数器决定。请尝试以下操作:
s='Bilbo'
,然后尝试:
对于枚举中的i,c:print c+s[i+1://code>,一旦您看到这一点,其余的操作就很简单了。@Andrew,很抱歉,这是我犯的错误。我把所有的东西都翻译成了英语,这样你就可以理解了。我想,在学校里,你也应该自己解决这个问题,但我们到了。哦,谢谢,我真的很感谢你的帮助。这个网站有着惊人的反应。我想你的意思是
print name[idx:][
而不是
print name[a:][