python学习第二天
字符串与编码:
- ascii编码只能编写英文字符串,如果想要使用中文字符串,就需要用到unicode,但unicode编码要比ascii编码多一倍的存储空间,所以速度会很慢,需要转化成“可变长编码”的UTF-8编码,他把unicode编码按照不同数字大小编码成1-6个字节,常用英文是1个,常用汉语是3个,这样会节约空间。
- python的字符串是以unicode编码的,所以支持多种语言,
ord()
函数提供字符的整数表示,而chr()
函数提供将编码转化成字符,如ord(‘中’)=20013,chr(20013)=中,而在字符串的传输和保存过程中,需要转化成bytes型,以unicode表示的str通过encode()方法可以编码为指定的bytes,例如:abc.encode('ascii')=b'abc','中文'.encode('utf-8')=b'\xe4\xb8\xad\xe6\x96\x87'
而反之可以用decode()可以反向转化b'ABC'.decode('ascii')='ABC'
。 - len()函数可以计算str中有多少字符,如len(‘abc’)=3,也可以计算bytes的字节数,如len(b’abc’)=3,len(b’\xe4\xb8\xad\xe6\x96\x87’)=6,len(‘中国’.encode(‘utf-8’))=6。
- 格式化有三种方式,一种是与c语言相似,如
print('我是%s,我%d岁'%('jack',18))
,第二种是format格式化,如print('我是{0},我{1}岁'.format('jack',18))
,第三种是f-string型,print('我是{'jack'},我{18}岁')
当然{}中可以格式控制如{18.d}。
数据类型
- list型,是一个列表,有序集合,是可以随意删减修改的,如
classmate['a','b','c'],len(classmate)=3)
我创建了一个含三个元素的有序列表,如果我想获得最后一个元素,我可以写classmate[2]或是classmate[-1]
此时如果我想要删掉其中一个元素,classmate.pop(2)
这时我就删掉了最后一个元素,如果我又回心转意了,我要加上他,这时,我可以classmate.append('c')
也可以classmate.insert(2,'c')
。 - tuple型,一旦初始化就不能修改,如
t=(1,2)
,但这里有一个特殊情况,如果只有一个元素,那么逗号不能掉如t=(1,)
,如果掉了就会默认是一个数而不是列表,但tuple中的元素可以是任何类型,所以你可以将其中一个元素设为list型,这样就可以通过修改这个元素来修改这个列表。 - dict型,在其他语言中被称为map,使用键-值储存,具有极快的查找速度,
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} d['Michael'] =95
,这时一种以空间换时间的方法。 - set型set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list作为输入集合s = set([1, 2, 3]) s {1, 2, 3}
,s.add(),s.remove()。
条件判断和读取和模式匹配
- 和c语言一样,用的是if else,但c语言在写多个的时候用的是elseif而这里用的是elif,如
if a>2:a++ elif a<2: a-- else a==2:pass
。 - 读取用的是input()函数,如
x=input('x:')
代表的是x:,然后你输入一个数你读取。但有一个要注意的地方,input()的输出是一个str型,即你输入一个1,他会输出’1’,所以你需要用强制转化符如int()去转化结果。 - 模式匹配与条件判断基本上是一样的功能,但在情况较多的情况下提高了程序的可读性,如:
`score = ‘B’
match score:
case ‘A’:
print(‘score is A.’)
case ‘B’:
print(‘score is B.’)
case ‘C’:
print(‘score is C.’)
case _: # _表示匹配到其他任何情况
print(‘score is ???.’)
这里有一个需要注意的地方,case_表示其他情况,case后面的东西可以是多个这就需要用 | 来隔开如a|b。
循环
- 如果我要输出一个列表中的所有元素,如·
list1=[1,2,3],for x in list1:print(x)
,如果我要计算1到100的值,那么我就需要range()函数,range(x)指输出从1到小于x的整数,这个x必须是整数,sum=0,for x in range(101):sum=sum+x
,while,break,continue和c语言基本一样。