正在照着廖雪峰dalao的教程学习python中
目前学到了高级特性->切片
这节课有个教程

利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法:

思考了很久,最终用笨方法写出来了一个模板

l = ''
if(l):
    x = 0
    y = 1
    while(l[x:y] == ' '):
        x = x+1
        y = y+1
    print('清除左边的空格以后',l[x:])
    print('左边不为空格的序号',x)
    m = -1
    n = -2
    if(l[m] == ' '):
        while(l[n:m] == ' '):
            m = m-1
            n = n-1
        print('清除左右边的空格以后',l[:m],9)
        print('右边不为空格的序号',m)
        print(l[m:] == ' ',l[m:],9)
        print(l[x:m],9)
    else:
        print(l[x:],9)
else:
    print('为空')

修改 l 为 'hello', ' hello ',' hello','hello ',' hello world ',' hello world with you '
等都可以正常输出左右的空格并且保留单词之间的空格。代码现在还比较简陋,但起码解决了问题,等以后熟悉了python的语言以后再回来优化吧

------------分割线----------
8.1
刚刚学到了python的列表生成
就是在循环的时候直接创建一个列表
比如创建一个包含1-10的数组

L = list(range(1,11))

创建一个x*x的1-10的数组

L = [x * x for x in range(11)]

创建一个只包含偶数的1-10的x*x数组

L = [x * x for x in range(10) if x%2 == 0]

甚至可以套用循环

L = [m + n for m in 'abc' for n in 'xyz']
输出 ['ax', 'ay', 'az', 'bx', 'by', 'bz', 'cx', 'cy', 'cz']

把一个列表中的所有字符串改成小写

L = ['Hello','Prient','Hesitate Will Give Nothing']
print(s.lower() for s in L)

但是要是list中含有除字符串以外的项目,比如数字,输出就会报错
isinstance函数可以判断一个变量是不是字符串

L = 'Hello'
isinstance(L,str)
输出 True

练习 请修改列表生成式,通过添加if语句保证列表生成式能够正确地执行:
L1 = ['Hello','World',18,'Apple','None']

一开始我采用的是很基本的方法

L2 = []
for x in L1:
    if(isinstance(x,str)):
        L2.append(x.lower())
print(L2)

后来看了评论,发现有更简单的方法

L2 = [x.lower() for x in L1 if isinstance(x,str)]

一句话就完成了


munergs
30 声望8 粉丝

现在即是最好。