2024-04-20 00:05:24 发布
网友
我在创建一个向下打印用户名的程序时遇到了一点问题,它总是删除每行的第一个字符,然后当它位于最后一个字母时再向上打印。你知道吗
到目前为止,我的情况是:
name = input("Put in a name: ") name_length = len(name) for counter in range(name_length,0, -1): print(counter)
下面是它的结局
这是一种仅使用单个循环和切片来实现相同目的的方法。它创建了一个索引列表,从该索引开始切片,然后逐步打印列表。你知道吗
name = "Bilbo" a = range(len(name)) a = a[:-1] + a[::-1] for idx in a: print name[idx:]
我认为它会起作用:
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)
for
下半场:
ck ack tack stack
注意:在本例中,您可以像我一样在第一个for循环或第二个for循环中打印单个字符,具体取决于您。你知道吗
希望这有帮助。你知道吗
虽然我认为你应该使用@Andrew建议的解决方案,但是如果你在他的解决方案中print a得到字符串切片的序列[0, 1, 2, 3, 4, 3, 2, 1, 0],这样就可以在单个for循环中完成
print a
[0, 1, 2, 3, 4, 3, 2, 1, 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
这是一种仅使用单个循环和切片来实现相同目的的方法。它创建了一个索引列表,从该索引开始切片,然后逐步打印列表。你知道吗
我认为它会起作用:
输入:
输出:
我把输出分成两半:
上半场:
这将通过使用Slice的第一个
for
循环来实现(检查以了解更多Explain Python's slice notation)下半场:
注意:在本例中,您可以像我一样在第一个
for
循环或第二个for
循环中打印单个字符,具体取决于您。你知道吗希望这有帮助。你知道吗
虽然我认为你应该使用@Andrew建议的解决方案,但是如果你在他的解决方案中
print a
得到字符串切片的序列[0, 1, 2, 3, 4, 3, 2, 1, 0]
,这样就可以在单个for
循环中完成递归回答
从本质上讲,打印同一个字符串两次,但在此期间再次调用函数,但删除第一个字符。当起始索引大于字符串-1的长度时,就剩下一个字符。你知道吗
输出
相关问题 更多 >
编程相关推荐