python初学的问题记录3-4

问题三

切片操作的注意事项,要防止空字符串引发的IndexError: list index out of range。

从例1可以看到对于非空字符串的切片操作,输出都是一样的,原因是slice不会改变原数据的数据形式,依然为str类型。

L= 'abc'
print(L[-1])
print(L[-1:])
print(L[0])
print(L[0:1])

#输出
#c
#c
#a
#a

但是如果L是空字符串,会报错。

L = ''
print(L[-1]) #报错
print(L[-1:]) #可以正常执行
print(L[0]) #报错
print(L[:1]) #可以正常执行

#输出

#print(L[-1])
#IndexError: string index out of range
#print(L[0])
#IndexError: string index out of range

由此可以看到有冒号和没有冒号的区别,尤其是在写自定义函数时,要写上冒号。

#自定义一个strip()函数

def trim(s):
    while s[:1] == ' ': # 如果是s[0]则会报错,因为编译器会认为s有为空字符的可能
        s = s[1:]
    while s[-1:] == ' ': # 如果是s[-1]则会报错,因为编译器会认为s有为空字符的可能
        s = s[:-2]
    return s

# 测试:
if trim('hello  ') != 'hello':
    print('测试失败!')
elif trim('  hello') != 'hello':
    print('测试失败!')
elif trim('  hello  ') != 'hello':
    print('测试失败!')
elif trim('  hello  world  ') != 'hello  world':
    print('测试失败!')
elif trim('') != '':
    print('测试失败!')
elif trim('    ') != '':
    print('测试失败!')
else:
    print('测试成功!')

问题四

从问题三拓展开,列表就不一样了,列表的下标问题,要注意区分slice和列表内容的类型区别。

如果是通过slice方式,那么生成的结果依然是个list,如果是下标取值,那么取到的是列表中的内容。

list1=['a', 'b', 3]
print(list1[0])
print(list1[:1])
print(list1[-1])
print(list1[-1:])

输出结果
#a
#['a']
#3
#[3]

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值