为什么不对
def f(l):
for i in l:
if isinstance(i,str):
i=i.upper()
else:
continue
return l
def f(l):
for i in l:
if isinstance(i,str):
i=i.upper()
else:
continue
return l
2016-03-28
楼主的代码,如果缩进没有所悟的话,如下 (将小写l改写成大写L,便于辨认):
def f(L): for i in L: if isinstance(i,str): i=i.upper() else: continue return L
这个问题,初学者经常会疑惑, 就是for 循环中 in 前面的i 到底是什么?
这个i 就是 一个变量名, 每次循环,依次从L 列表中 取出值,赋给i, 一定要注意: 改变 i 的值,并不能改变列表L!!!
既然知道了,这一点,那么稍微修改下就是正确的函数了,我直接贴出我当时通过这课是写的代码了:
def toUppers(L): return [x.upper() for x in L if isinstance(x,str)] print toUppers(['Hello', 'world', 101])
按照楼主的写法, 重写下:
def to_uppers(L): for i in range(len(L)): if isinstance(L[i],str): L[i]=L[i].upper() return L
举报