.第一周遇到的错误总结:
1.eval():该方法是把字符串中的内容解析出来,使其作为可执行的代码,而不是转化为某种数据类型
2.字符串中的元素是不可变的,若用str.replace()方法修改字符串,本质只是新建了一个字符串,元字符串并没有改变
3.bin():该方法的参数必须为int类型的,才能转化为二进制的形式,否则程序会报错
4.字符串也是一个序列,也可以通过下表来进行相关的操作
5.set数据类型也是一个序列,只不过里面存放的内容是无序的,无法通过下标来进行相关的操作
6.递归调用:该方法肯定有一个出口,找到它,就能更方便的找到相关的规律,从而实现递归调用
7.死循环的使用:适当的给死循环一个出口,这样可以利用死循环实现相关的操作, 很实用
8.利用and和or也可以实现简单的判断,但是有0参与运算,可能会出错,所以后来用if和else代替了
9.关于tap键:操作为\t,四个空格以内都为一个tap,超出则生成一个新的tap,可用于实现四个空格以内的竖向排列,使其美观
1.大作业‘万年历’遇到的问题:
1.经常在使用while循环时,忘了写实现循环操作(+=…)
2实参传递错误,影响程序运行结果
3.对所要实现的事物分析不当
2.第二周遇到的错误:
1.三元运算符的格式一般是:res = 表达式1 if 条件 else 表达式2
注意:必须要有个赋值,方可使用
2.range():该方法后是(),而不是【】,
注意别写错了
3.res = a or b:该格式会把比较res和a or b进行比较,a 和 b会被当做bool值比较,因为a 和 b均不为空的序列,所以a b 为结果为true,若res也不为空值,则true == true该条件成立,若res为空置,则flase !=true,该条件不成立
4.str中比较难记的:str.round():str.index(), str.count()数过的不用管, str.strip()可以从左和右去除,str.startswith(),str.isalpha(),str.isdigit(),str.upper(),str.lower(), str.swapcase(),str.capitalize(), str.title(), str.replace(),str.join()
5.list.insert():该方法是在指定的位置插入元素,原列表后面色元素角标+1, 像【‘今天’, ‘’哈哈】list.insert(1, ‘的’)就是把‘的’插入到1角标的位置,然后列表后面的角标加1,变为【‘今天’, ‘的’, ‘’哈哈】
6.index方法在str和list中都适用,不过index方法有点low
注意:list中没有find这个方法,不要乱用
7.变量1, 2里存的是list,变量1–>变量2(赋值操作),此时传的是地址id
8.string.ascii_letters和string.digits是string模块中的包括0~9, a~z, A~Z所有的字符串
9.res = list.sort():会报错
list.sort()
res = list:不会报错
原因:下面的问题中有相关的说明
10.注意:字典在遍历的时候不允许修改字典的长度, 所以在遍历的时直接做修改等操作的话,会报错
11.赋值的小技巧:
a, b = 11, 12
a, b = (11, 22)
a, b = 【11, 22】
12.需要提问的问题:
1.类似于res = str.sort()这样的格式为什么会报错?
答案:str.sort()方法只是进行了排序,没有返回具体的值,所以res被赋予的是个空值,默认为None
2.str.splite()切片,为什么用空格切没有自动删除空白部分?
答案:str.split(),不传参数,则 默认会切除点所有的空白字符,用空格则只能切去空格字符,判断空字符的话,要用len(str.split())判断
3. "".join()拼接的原理到底是什么,返回的值到底怎么看?
答案:str.join()是字符串的方法,只适用于字符串元素的之间的拼接,不能用于其他数据类型的拼接
4.在while循环中用continue想要结束当前循环,却变成了死循环的原因?
答案:使用continue语句和break语句时,在其下方的平级语句永远也执行不到,切记
13.系统提供的find, remove, index等方法都不咋靠谱,在实现程序时为了避免出现bug,应尽量少用这些方法
注意:list.remove()这个方法是没有返回值的
14.装饰器那里有点逻辑性,还有filter高级函数
1.大作业‘求输入两个时间的差值’遇到的问题,
1.再用datetime高阶函数中相应的方法解决问题时,用datetime.datetime()方法得出两个时间,然后求差指时,求出的差值类型为datetime.timedelta类型,无法转换为str类型(反正我自己是转不过来),不过datetime.timedelta类型中的days属性等为int类型,这个还挺好使
2.open读写文件,后面跟的路径:可以是绝对路径,也可以是相对路径,若只写文件名的话,则python默认寻找当前目录下寻找,若找不到,则会报错
3.相对路径的小知识:上级目录(…/),当前目录(./)
2.第二周遇到的错误:
1.函数生成器:必须赋值给一个变量,方可使用,若不赋值,则用next()调用,则会重复生成生成器
2.运算符的重载:对运算符进行重写后方可根据需求使用
3.用类调用类方法时,不能调用带参数的方法,因为会导致参数传输错误,进而提示:缺少关键参数, 若定义的是普通方法(即不带self)的话,会把self视为一个形参
4.collections中的defaultdict:如果找不到对应的key的话,则会返回 自己设定的值,无论使用dict【】取值还是dict.get()
5.collections中的OrderedDict:让字典变为,有序的,注意,这里的有序指的是根据键值对插入的顺序进行排序的
6.collections中的Counter:可以当作一个计数器来记
7.python中:没有uuid2这个方法
8.uuid3和uuid5:分别用的是MD5散列值和SHA散列值
9.uuid使用经验:
1、python中没有基于DCE的,所以uuid2()可以忽略
2、uuid4()存在概率性重复,由于无映射性,最好不用
3、如果在全局的分布式环境下,最好使用uuid1()
4、若名字的唯一性要求,最好使用uuid3()或uuid5()
10.编码:base64(查表编码)
11.加密的摘要算法:MD5散列值,SHA1等,更安全的有:hmac摘要算法等
12.class_base_:代表的 是class的继承的类的列表
3.第三周遇到的错误:
1.tkinter中Scrollbar(滚动条)回调函数指定…
2.tkinter中的Combobox的current():设置的默认值指得是下拉数据下标对应的位置
3.动态的给类添加方法时,直接把方法赋值给类就可以,
与实例不同的是:不用MonthodType