一般来说,十家面上,一两家,一周左右找到,
面试官可能不知道细节,so,尽可能圆过去,
课上3个星期,课下可能2个多月,
学的好的,不一定会找到工作,
和自己比,放平心态,做到今天比昨天好!!!
作业讲解:
#4、有字符串"k :1|k1 :2|k2 :3|k3 :4" 处理成字典 {'k':1,'k1':2....}
s = 'k:1|k1:2|k2:3|k3:4'
li = s.split('|')
dic = {}
for i in li:
dic[i.split(':')[0]] = int(i.split(':')[1])
print(dic)
dic = {'k':1,'k1':2}
dic = {}
for i in s.strip().split('|'): # ['k:1','k1:2'。。。。]
i = i.strip().split(':') # ['k ','1']
dic[i[0].strip()] = int(i[1])
print(dic)
#第一种是我自己写的,第二种是老师写的,我只想说,处理空格这些看不见的字符,很重要
tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])
print(type(tu[1][2]["k2"]))
#这里打印出的是字典k2对应的列表的类型,
#我想去打印k2的类型,键!多次实验,不行
num = 3
if num in range(1,10):
print(num)
#这种方式和 num>0 and num<=len(li)哪个效率高?
# 还是and的效率高,因为可能range()里面的值可能会很大,内部做了很大的遍历,
n = 4
while n = n-1: #这个反正不行,别想了,
pass
#invalid syntax,无效语法,看来python不支持C里面的这种写法,
#我猜测,可能是C是底层语言,而python封装了很多,所以不行,
这里开始不是作业讲解了,
a,b=(3,4) #首先这里是元组,
print(a, b)
dic = {}
for x,y in dic.items():#然后这里的items()也是元组,先记着吧,
print(x, y)
字符串不好操作,可以尝试将其转换为列表进而进行操作,
先讲小数据池和id()吧,
a = 1000
b = 1000
print(a == b)
print( a is b)
#运行结果
True
True
>>> a = 1000
>>> b = 1000
>>> a == b
True
>>> a is b #这里是对的,
False
>>> #这里是python shell运行的结果
#来个总结,第二个结果,pycharm报的是True,python命令行报False,
#pycharm对这个优化了,所以以python shell为准,
#也就是说以第二个为准,
小数据池,仅限小范围的数字和字符串,
下面讲,how small number and string
数字的话,-5~256,this is to say,
>>> n1 = 5
>>> n2 = 5
>>> id(n1)
1825592224
>>> id(n2)
1825592224
>>> n1 = 300
>>> n2 = 300
>>> id(n1)
2616865521008
>>> id(n2)
2616865520912
>>> n1 is n2
False
>>> n1 == n2
True
>>> #判断的是值是否相等,is判断的是内存是否是同一个.
>>> # ==判断的是值是否相等,
>>>
而小数据池,关于字符串这块,官网也没有给一个明确的定义,
暂且这么理解吧,
1,如果含有特殊字符,不存在小数据池。
2,str(单个) * int int > 20 不存在小数据池。
其它的暂且不存在小数据池,
编码底层虽然都是二进制,但是它们的二进制不同,也就是说,它们不熟,不认识,
unicode编码占用位置太多,所以存储和传输都将占用大量空间,
不仅python,其它编程语言,也不会用unicode码来传输,比如java,
不过编码之间的转换,还是会用到unicode编码,
我们之前学了int,str,bool等数据类型,
还有种类型,就是byte,
它拥有与str一样的方法,
目前暂且可以总结的是,
python3的字符编码是utf-8,但是在内存中是unicode,
因为内存中是unicode,所以我们在操作的时候,不能直接存储和发送,
在此,我们再提到之前的byte,它就不是unicode的,
那我们就可以来个转换,
s = 'YQ'
print(type(s))
print(type(s.encode('utf-8')))
y = '哈哈'
print(type(y))
print(type(y.encode('gbk')))
'''下面是运行结果,
中文和英文我都试了,
也试了其它编码,比如GB2312,
重点是编码后,它们打印类型都是bytes,
正好印证了老师说的,bytes编码是非unicode,或者utf-8,
'''
s = 'hehe'
s = s.encode("utf-8")
print(s) #打印结果b'hehe'
print(s.upper()) #打印结果b'HEHE'
s = '中国'
s = s.encode("utf-8")
print(s) #打印结果b'\xe4\xb8\xad\xe5\x9b\xbd'
print(s.upper()) #打印结果b'\xe4\xb8\xad\xe5\x9b\xbd'
#两组实验最后都调用了upper(),也说明了byte与str的函数方法一样
s = 'hey boy'
s1 = s.encode('utf-8')
print(s1)
#打印结果:b'hey boy',
#encode()后,打印那个值,前面都会加个b的标志,代表二进制,但应该是处于便于显示的原因,还是显示原来的样子,
#来个小补充,不过前面加了b来提示,其实这已经是二进制的形式了,
#对于中文的,会有\x提示这是以十六进制的方式显示,应该是便于人查看二进制才以十六进制形式显示吧,
gbk,使用2字节,因此有些中文还表示不了,但是对于常用的中文,还ok,
gbk的英文用的也是ascii码,
来个小总结,那这样的话,不同编码是有些相同的部分,不过大多数还是不同的,