用python写了一个小程序(十分小),但不知道哪里错了?

s='abcde'foriin[None]+range(-1,-len(s),-1):print(s[:i])代码如上。我用的是python3.2.2,这段代码在pyth... s='abcde'
for i in [None]+range(-1,-len(s),-1):
print(s[:i])
代码如上。
我用的是python3.2.2,这段代码在python2.4中应该是可以用的,我知道python3.x改了不少东西,当range()这个函数具体怎么改的还真是不太清楚,但从这个程序上看,在python3.2.2中似乎range()不生成一个列表!
展开
 我来答
ppcat820
2012-01-08 · TA获得超过459个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:212万
展开全部
虽然我好长时间没接触Python了,但是我感觉你无非就是要以一定顺序输出s中的东西。但我感觉你for循环中是不是略显麻烦了?需要用[None]+这样的语法来生成一个list吗?不是range()直接返回一个list吗?(或者可以看看xrange()之类函数,我记得能返回list).
如果是输出一个倒切片序列(每次少最前面的字母),好像不用这么麻烦。list好像有个pop函数,循环pop,然后输出剩下的就行了吧。
追问
(1)python3.x中range()已经不生成一个list啦。
(2)python3.x中去掉了xrange()
(3)如果按你说的用pop(),那么list就变了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Inpool
2012-01-09 · TA获得超过782个赞
知道小有建树答主
回答量:486
采纳率:66%
帮助的人:435万
展开全部
3.x中的range应该是生成一个类生成器对象
就是用yield返回值的那个东西,参考下面这段程序:
#---------function myrange-----------
def myrange(*args):
if len(args) == 1:
start = 0
step = 1
end = args[0]
if len(args) == 2:
start = args[0]
step = 1
end = args[1]
if len(args) == 3:
start = args[0]
setp = args[2]
end = args[1]
while start < end:
yield start
start += step

#----------你的问题可以这样解决----------
s = 'abcde'
for i in range(len(s)):
print(s[:len(s)-i])
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
apricot125
2012-01-05 · TA获得超过750个赞
知道小有建树答主
回答量:355
采纳率:0%
帮助的人:263万
展开全部
for i in [None] + list(range(-1,-len(s),-1)):
更多追问追答
追问
好像原来range()是直接可以生成列表的,现在range()实质返回的是什么呢?
追答
>>> x = range(0,1)
x
试一试不就知道了。其实也可以这样:
s = 'abcde'
for i in range(len(s),-1,-1):
print(s[:i])
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式