开始第二周的学习,白天上班,晚上码字,感觉自己萌萌哒,接近年底,事务繁忙,明天又有检查,今天坐了一天的ppt,这感觉真的是听酸爽的,mmp的。
上周,武老师讲的内容还有一点没记录的,先写到这里占个楼。
一、字符串的内存使用机制
说实话,不知道这个有什么用,先占个楼,后续遇到了,在回来进行修正。
记住以下内容,适用于所有的语言,包括C语言:
(一)字符串在内存中一旦创建,不可修改;
(二)一旦在程序中对创建的字符串进行修改,都会重新创建一个字符串,并写入内存。
我大概明白怎么回事,至于有diao用,后续在实践吧。
二、其他基础知识的一些补充
(一)索引、切片功能,[ ]方法
1.索引,用str[n],表示字符串中的第几个字符是啥,在列表,元祖和字典中也适用;
2.切片,用str[n:n+j],表示的是字符串中的一段字符是啥,在列表,元祖中使用,字典因为是无序的,不适用于切片(此内容需要完善,后续如果有错,在回来纠正)。
其中,n,j都是整数。
用法:对字符串使用索引、切片,[ ]方法,从0开始,指出指定位置的字符是啥。
#索引,下标,获取字符串中的某一个字符 str="我是小果果" v1=str[3] v2=str[0:-1]#-1是从右边开始数第一个数,左闭右开原则 print(v1,v2)#输出 果 我是小果
(二)len()方法
用法:对字符串使用len()方法,可以获取当前字符串的长度,从0开始.
Python 2中,如果str为中文字符,一个中文字符则占用3个长度。
join和len在列表,元祖中也可以使用。
str="小果果是只小狗" v=len(str) print(v)#输出结果为7
(三)for循环语句
str="小果果是只小狗" for s1 in str: print(s1)#顺序输出str中的字符,自带 换行。
(四)range()语句
用法:指定范围,生成指定的数字
在Python3中,因为内存优化机制,在不使用时候,range是不会输出的,比如print(range(1,10))#输出为range(1,10)。
for s1 in range(1,10,2):#括号内的3个参数分别是 最小值、最大值、步长 print(s1)
(五)enumerate()
用法:enumerate在字典上是枚举、列举的意思,
#对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。
#enumerate多用于在for循环中得到计数。
str='我是小果果' for index, item in enumerate(str): print(index,item) ''' 输出 0 我 1 是 2 小 3 果 4 果 '''
# 练习:把用户每个输入的字符,按顺序输出,并在字符前面标注序号。 str=input('请输入任意东西>>>') l=len(str) s=range(l) for i in s: print(i,str[i]) print('============')
代码基本上实现了功能,下面写一写自己的心得:
(1)一定要对for循环有个清醒的认识,for循环如果没有可变的‘东西’(因为涉及的可动的太多,统称东西吧),他是不会运行的,或者说是会报错。所以,for循环+range()组合基本上是最常用的组合之一了吧。就是顺序输出的典型。
(2)while语句一般都是需要条件的,和for循环对比,用while语句的思路不太一样,代码如下:
#while循环实现逐个输出: str='小果果一身的狗毛' i=0 while i<len(str): print(str[i]) i+=1
#for循环实现逐个输出: str='小果果一身的狗毛' for i in str: print(i)
区别还是很明显的,while语句中定义的i,是为了找到一个变化的int来满足其循环条件;而for语句中定义的i,是为了可以乘载它拿出来的数据的一个载体;
所以说,以后对于遇到循环的问题,如果涉及到判断,用while语句,而如果涉及到逐个输出的问题,一定是用for语句。两者生而不同。