为了账号安全,请及时绑定邮箱和手机立即绑定

为什么不对

def f(l):

for i in l:

if isinstance(i,str):

i=i.upper()

else:

continue

return l


正在回答

2 回答

题目要求只输出字符串元素,你的函数对于非字符串元素还是会正常输出的

0 回复 有任何疑惑可以回复我~

楼主的代码,如果缩进没有所悟的话,如下 (将小写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


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758623    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

为什么不对

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信