为什么会出现这样的情况,怎么解决?
初始代码:d =
words = "FCF FC CF"
word =
for j in range(len(d)+1):
word = words+1:d]
print(word)
报错:
Traceback (most recent call last):
File "C:\Users\xsr29\Desktop\2.py", line 5, in <module>
word = words+1:d]
IndexError: list index out of range
修改版本1:
d =
words = "FCF FC CF"
word =
for j in range(len(d)):
word = words+1:d]
word[-1] = words+1:]
print(word)
返回:['', 'FC', 'CF']
修改版本2:
d =
words = "FCF FC CF"
word =
for j in range(len(d)-1):
word = words+1:d]
word = words[:d]
word[-1] = words+1:]
print(word)
返回:['FCF', '', 'CF'] 本帖最后由 jackz007 于 2022-8-13 11:07 编辑
words = "FCF FC CF"
word , s = [] , ''
for c in words:
if c != ' ':
s += c
else:
if s:
word . append(s)
s = ''
if s:
word . append(s)
print(word)
words = "FCF FC CF"
word = words . split()
print(word) 初始代码:
长度问题,没有word
修改版本1:
len(d)=2,所以j是1和2,word[-1]就是word,所以并未给word赋值
修改版本2:
len(d)-1=1,所以j取1,只赋值了word也就是word,下面函数也只给word和word赋值,所以并未给word赋值
存在于for函数中的通篇问题:
d[-1]=d=6,所以在初始代码中长度正确也无法输出正确结果
修改方法1:不知道可不可以修改d,将d改为[-1 3 6 9]
d = [-1,3,6,9]
words = "FCF FC CF"
word =
for j in range(len(d)-1):
word = words+1:d]
print(word)
修改方法2:如果要求d不能更改,在修改版本2上改
d =
words = "FCF FC CF"
word =
for j in range(len(d)):
word = words+1:d]
word = words[:d]
word[-1] = words+1:]
print(word)
这么写其中第二个for函数没有什么意义,建议去掉改为:
d =
words = "FCF FC CF"
word =
word = words+1:d]
word = words[:d]
word[-1] = words+1:]
print(word) sj185123 发表于 2022-8-12 16:40
初始代码:
长度问题,没有word
修改版本1:
感谢回答{:10_275:}
补充点背景:
这段代码的目的是,将words中以空格分隔开的内容分别填入列表word中,列表d的含义其实就是words中空格的下标索引值。使用第二个for函数的原因是,words是通过输入获取,也就并不知道有多少个内容,在这里是直接赋值以简化流程。
在学习了下一期视频后,可以直接用split()函数实现,但我想知道不用这个方法,怎么实现目的。 本帖最后由 tommyyu 于 2022-8-13 11:08 编辑
我感觉可以这样words = "FCF FC"
word = []
while words != '':
try:
word.append(words)
except:
word.append(words)
break
words = words
print(word)
就不需要d列表了 tommyyu 发表于 2022-8-12 20:22
我感觉可以这样
就不需要d列表了
我还没学到try,except{:10_319:} 本帖最后由 tommyyu 于 2022-8-14 10:51 编辑
华南虎_丿 发表于 2022-8-14 09:21
我还没学到try,except
这个也行
words = "FCF FC"
word = []
while words != '':
if words.find(' ') != -1:
word.append(words)
else:
word.append(words)
break
words = words
print(word) jackz007 发表于 2022-8-12 11:48
我还试了试其他的字符串,完全ok{:10_323:}
就是还有个问题,第7、10行的" if s:",为什么s是空字符串就不执行{:10_262:} tommyyu 发表于 2022-8-14 09:23
这个也行
这个切片很牛呀{:10_275:}
试了试其他字符串也可以,是一个好答案
页:
[1]