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 可以将整个字典当作关键字参数传入

 

posted @ 2019-02-19 13:06  ZHUQW  阅读(210)  评论(0编辑  收藏  举报