python基础
输入输出
1)print() 输出:
print() 函数可接受多个字符串,用逗号隔开,print() 会依次打印每个字符串,遇到逗号会输出一个空格。
print("abc", "bcd", "def")
2)input() 输入:
num = input("input a number:")
数据类型
整数、浮点数
二进制数:0b110 为6 16进制:0x20 为32
字符串
字符串可以用 'laksd' 或者 “askjda”
常量
为了便于标识,一般将常量用大写字母表示: PI = 3.1415926535
除法
/ :精确除法 // :整除
字符串
编码
ASCII编码:1字节,只有常用的127个字符,即英文字母+数字+符号
GB2312编码(不常用):2字节,ASCII基础上将中文编码进去
Unicode:2字节,把所有语言都放到统一的一套编码中
UTF-8:变长编码,由于Unicode长度统一,则在经常使用英文字母的环境中Unicode显然比ASCII多占1倍存储空间,因此UTF-8将常用英文字母编为1字节,汉字编为3字节,生僻字编为4-6字节。
由于UTF-8将英文编为1字节,所以ASCII是UTF-8的一部分,支持ASCII的一般也支持UTF-8。
计算机在内存中统一使用Unicode编码,当保存为文件或传输时转换为UTF-8编码。
python字符串
python3中字符串用unicode编码,所以python的字符串支持多种语言。
ord() 函数将获取字符的整数unciode编码,chr() 函数将整数unicode编码转换为对应字符。
在网络中传输或保存需要将str编为字节为单位的bytes类型。 str以单个字符为单位处理(如unicode的字符的字节数不定),而bytes以字节为单位。
#unicode形式的str转换为bytes 'ABC'.encode('ascii') "汉字".encode('utf-8') #中文转换为ascii会出错
#将字节流变为str,出现无法解析的字节会报错,可人为忽略错误 b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8') b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8', errors='ignore')
当python源代码包含中文时,在保存到磁盘时,需要指定保存为utf-8。打开源代码读取时也应显式指明编码
# -*- coding: utf-8 -*-
格式化输出
#与c语言类似,但后面参数列表需要用()括起来,前面还要加% print('%02d %s' %(200, 'abcd'))
list和tuple
list:
name = ['abc', 'def', 'kas'] name[-1] #-1表示倒数第一个索引,-2同理 name.append('ada') #追加元素到末尾 name.insert(2, 'ccc') #插入到指定位置 name.pop() #删除末尾元素 name.pop(2) #删除指定位置 name[1] = "dddd" #修改元素 L = ["abc", 1000, True] #元素可不同类型
tuple
tuple一旦初始化就不可修改,只能访问。
tp = (1,2,3) #初始化 tp = ( ) #空的tuple tp = (1) #这不是tuple,而是一条赋值语句,括号被当成运算符号 tp = (1,) #这是tuple tp = ('abc', 100, ['a', 'b', 'c']) #tuple不可变,但其内部的list可变
循环
1)for in 循环:
for i in [1,2,3,4,5]: print(i) for i in range(101): #左闭右开,故i从0到100 print(i)
2)while 循环
dict 与 set
1)dict
dic = {'Mich':95, 'Bob':75, 'Tracy':85} #新建字典 print( dic['Mich'] ) #访问字典 dic['Mich'] = 99 #更改键值 'Bob' in dic #查询键值是否存在,返回bool值 dic.pop('Bob') #删除键值
注:dict中的键值必须是不可变对象,因此list不能作为键值
2)set
st = set([1,2,3,4]) #创建set需要提供一个list作为输入集合 st.add(5) #添加到set st.remove(4) #删除元素 st3 = st1 & st2 #集合取交 st3 = st1 | st2 #集合取并
函数
1)一些内置函数:
abs(): 求绝对值,只有一个参数
max(): 求最大值,可接受任意多个参数
数据类型转换: int('123') int(12.45) float('3.1415') str(1000) bool(1)
2)自定义函数:
def myFunction(a, b): if a > b: return a, b else: return b, a
注:函数只能返回一个值,但这里的 a,b 其实是返回了一个tuple,只不过省略了括号
3)函数参数
默认参数:默认参数可以填写,也可以不填写,不填写时取默认值
def pow(x, n=2, m=3): #n=2 m=3即为默认参数 s = 1 while n > 0: n = n - 1 s = s * x return s pow(5) #5传给了 x pow(5, m=4) #多个默认参数时,可以按顺序提供,也可以 m=4 显式制定参数
可变参数:即传入的参数的个数是可变的,可以是0、1、2....个;参数传入后变成tuple
def calc(*numbers): # *numbers 即为可变参数 sum = 0; for i in numbers: #可变参数在函数内部会变成一个 tuple sum = sum + i return sum calc(1, 2) #参数个数可变 calc(1, 2, 3, 4) lt = [1, 2, 3, 4] calc(*lt) #该方法可以把list 或 tuple 的所有元素变成可变参数传入
关键字参数:不仅传入的参数个数可变,还允许这些参数带参数名;参数传入后变成 dict
def person(name, age, **kw): # **kw 即为关键字参数 print('name:', name, 'age:', age) for i in kw: #传入的关键字参数在函数内变成了 dict print(i, kw[i]) person("Sam", 12, rank="1st", gender="m", grade="100") #可传入任意个数的带参数名的关键字参数 dic = {"rank":"1st", "gender":"m", "grade":"100"} person("Sam", 12, **dic) # **dic 可以将整个字典当作关键字参数传入