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

时间:2016-09-10 18:41:46

标签: python for-loop

我在创建一个程序时遇到一些麻烦,该程序向下打印出用户名,总是会删除每一行的第一个字符,然后再删除最后一个字母的字符。

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

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

for counter in range(name_length,0, -1):    
    print(counter)

下面是它应该以

结束的内容

enter image description here

3 个答案:

答案 0 :(得分:1)

我认为它会起作用:

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
tack
ack
ck
k

使用Slice进行第一次for循环将会实现(检查以了解更多Explain Python's slice notation

下半场:

ck
ack
tack
stack

注意:您可以在此示例k中打印单个字符{1}}循环,就像我或第二个for循环一样,由您决定

希望这有帮助。

虽然我认为你应该使用@Andrew建议的解决方案,如果你在他的解决方案for中获得切片字符串print a,那么可以在单{{1}中完成} loop

答案 1 :(得分:0)

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

name = "Bilbo"

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

for idx in a:
    print name[idx:]

答案 2 :(得分:0)

递归回答

基本上,打印相同的字符串两次,但中间再次调用该函数,但删除了第一个字符。当起始索引大于字符串的长度-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

输出

Put in a name: cricket_007
cricket_007
ricket_007
icket_007
cket_007
ket_007
et_007
t_007
_007
007
07
7
07
007
_007
t_007
et_007
ket_007
cket_007
icket_007
ricket_007
cricket_007
相关问题