我不知道这是什么类型的问题,并且无法在网站上找到与此相关的内容。我正在尝试创建一个函数,在第一行打印出单词的第一个字母,然后打印下两个字母,依此类推。但是,我不确定如何防止重复完整的单词。例如,在单词' bar'中,它应该
b
ba
bar
ba
b
但是我的功能重复了两次吧。谢谢!
a= []
def letters():
x = input("Enter a string")
count = 0
for c in x:
count +=1
y = 0
while y <= count:
z = (x[:y])
a.append(z)
y += 1
negWords = a[::-1]
for words in a:
print (words)
for words in negWords:
print (words)
答案 0 :(得分:2)
你似乎在做一些不必要的工作,只是想打印一些东西。您可以使用len
来获取单词的长度,而无需通过循环来获取大小。
此外,收集列表中的数据似乎是不必要的。
要使用while循环坚持你的方法的本质,你可以遍历单词的整个长度并再次返回直到“0”。所以,对我来说,我看到它的长度是这个词的两倍。考虑到这一点,这将是我对while循环的控制。我会简单地检查我的增量器何时达到该单词的长度,然后从那里开始向后移动:
w = "bar"
l = len(w)
i = 0
while i <= l*2:
if i > l:
print(w[:(l - i)])
else:
print(w[:i])
i += 1
输出:
b
ba
bar
ba
b
答案 1 :(得分:1)
试试这个:
negWords= a[:-1:-1]
这将不包括第二次完整的单词
此外,您的代码可能会使用大量清理工作。例如:
count = len(x)
比你拥有的更有意义