我在创建一个程序时遇到一些麻烦,该程序向下打印出用户名,总是会删除每一行的第一个字符,然后再删除最后一个字母的字符。
这是我到目前为止所做的:
name = input("Put in a name: ")
name_length = len(name)
for counter in range(name_length,0, -1):
print(counter)
下面是它应该以
结束的内容答案 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