Python基础

121 阅读7分钟

一、数据类型

数据类型:整数、浮点数、字符串、布尔值
​
整数:十六进制:ox前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,很大的数可以用_分隔,10_000_000_00010000000000是完全一样的,十六进制也可以写成0xa1b2_c3d4
​
浮点数:1.23x10^912.3x10^8是完全相等的,对于很大或很小的数,可以用科学计数法表示,把10用e代替,1.23x10^9就是1.23e912.3e80.000012可以写成1.2e-5,浮点数运算会有四舍五入的误差
​
字符串:用单引号'或双引号"括起来
​
布尔值:true false

二、字符串和编码

编码转换

UTF-8包含Unicode
对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换成对应的字符
ord('A') ===> 65
ord('中') ===> 20013
chr(66) ===> 'B'
chr(25991) ===> '文'
​
len():字符串长度
replace(): 替换字符串

三、格式化输出

格式化输出,使用%:
    'Hello, %s' % 'world' ===> 'Hello world'
    'Hi, %s, you have $%d.' % ('Michael', 1000000) ==> 'Hi Michael, you have $1000000'
    
常见的占位符有:
    %d 整数
    %f 浮点数
    %s 字符串
    %x 十六进制整数
​
format():使用传入的参数一次替换字符串内的占位符{0}、{1}...
'Hello, {0}, 成绩提升了 {1:.f}%' .format('小明', 17.125) ==> 'Hello,小明,成绩提升了17.1%'
​
f-string:使用以f开头的字符串,称之为f-string,如果包含{xxx},就会替换掉相应的变量
r = 2.5
s = 3.14 * r ** 2
print(f'The area of a circle with radius {r} is {s:.2f}')
===> The area of a circle with radius 2.5 is 19.62

四、list集合

定义: list = [] , list = [1,2,3], list = ['Michael','Bob','Tracy']
元素个数:len()
获得索引位置元素:list[index]
获取最后一个元素:list[-1]
追加到末尾:list.append('元素')
插入到指定位置:list.insert(index,'元素')
删除末尾元素:list.pop()
删除指定位置元素:list.pop(i)
替换指定位置元素:list[index] = '元素'
排序:list.sort()
​
二维数组list = ['python','java',['asp','php'],'scheme'],要拿到'php'可以写成list[2][1]

五、tuple元组

tuple初始化:tuple = ('Michael','Bob','Tracy'), tuple = ()
tuple一旦初始化就不能更改,只有一个元素的时候必须加,来消除歧义,如tuple = (1,)
可以用index索引获取元素,没有append(),insert()等修改元素的方法,能用tuple的地方用tuple代替list
tuple不可变,但如果tuple里面的元素是list,可以改变list里面的数据,因为list的地址没变,只是list元素变了

六、条件判断

if elif else 
input()获取键盘输入

七、条件匹配

match ... case...
age = 15
match age:
    case x if x < 10:
        print(f'< 10 years old: {x}')
    case 10:
        print('10 years old.')
    case 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18:
        print('11~18 years old.')
    case 19:
        print('19 years old.')
    case _:
        print('not sure.')
        
注意: match是python3.10之后引入的特性

八、循环

for循环

for x in ...循环
案例:
names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print(name)
    
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
    sum = sum + x
print(sum)
​
range()是python提供的一个函数,比如range(5)是从04的整数,range(101)是从0100的整数

while 循环

while 循环,里面可以设置breakcontinue等语句
sum = 0
n = 99
while n > 0:
    sum = sum + n
    n = n - 2
print(sum)
​
加入break语句
n = 1
while n <= 100:
    if n > 10: # 当n = 11时,条件满足,执行break语句
        break # break语句会结束当前循环
    print(n)
    n = n + 1
print('END')
​
加入continue语句
n = 0
while n < 10:
    n = n + 1
    if n % 2 == 0: # 如果n是偶数,执行continue语句
        continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
    print(n)

dict

dict全程dictionary,在其他语言中也称为map,使用key-value形式存储
dict = {'Michael':95,'Bob':75,'Tracy':85}
d['Michael'] ==> 95
​
为避免获取值失败,可以先判断key存不存在, key in dict ==> True/False
可以通过get()方法获取,如果key不存在返回None,或者自己指定的value
dict.get('Thomas') ==> None
dict.get('Thomas',-1) ==> -1
​
删除key:dict.pop(key)
​
dictlist相比:
    1.查找和插入的速度极快,不会随着key的增加而变慢
    2.需要占用大量的内存
注意:dict的key必须是不可变对象

set

setdict类似,但是只存储key,而且不允许重复
创建一个set,需要提供list作为输入集合
s = set([1,2,3]) s ==> {1,2,3}
​
增加元素: add(key)
删除元素: remove(key)
​
set允许做数学意义上的交集、并集等操作
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}

九、函数

常用函数

绝对值:abs(数字), 例:abs(-10),如参数不对会报错,数量不对、参数类型不对
获取最大值:max(x...y), 例:max(1,2,4,6)
检查数据类型:isinstance(数字,(数据类型..)),例: isinstance(x,(int,float)),查看是否是整数或浮点数
​
数据类型转换
转换成整数:int(元素),例:int('123') ==> 123, int(12.34) ==> 12
转换成浮点数: float(元素),例:float('12.34') ==> 12.34
转换成字符串: str(元素),例: str(1.23) ==> '1.23'
转换成布尔值: bool(元素),例: bool(1) ==> True
​
转换城十六进制数: hex()

定义函数

def 函数名(参数):
    函数处理
        返回
​
例:获得绝对值
def my_abs(x):
    if x >= 0:
        return x
    else:
        return -x
        
空函数:
def nop():
    pass
​
python函数允许返回多个值(表象),其本质是返回的tuple
​
总结:
1.定义函数时,需要确定函数名和参数个数
2.如果有必要,先对参数的数据类型做检查
3.函数体内部可以用return随时返回函数结果
4.函数执行完毕也没有return语句时,自动return None
5.函数可以同时返回多个值,但本质上是个tuple

函数参数

默认参数值,在不填入值的时候也不会报错
def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s
power(5) ==> 25 , power(5,3) ==> 125
​
注意:
    1.必选参数在前,默认参数在后
    2.变化大的参数在前,变化小的参数放在后
    
可变参数:可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple
def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum
​
python允许你在listtuple前加一个*号,把listtuple的元素变成可变参数传进去:
>>> nums = [1, 2, 3]
>>> calc(*nums)
14
​
关键字函数:关键字参数允许你传入0个或任意个参数名的参数,这些关键字参数在函数内部自动组装为一个dict,用**kw表示。请看示例:
def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)
    
    
如果要弦值关键字参数的名字,可以命名关键字参数,如:
def person(name, age, *, city, job):
    print(name, age, city, job)
    
和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数
调用方式如下:
person('Jack', 24, city='BeiJing', job='Engineer')
==> Jack 24 Beijing Engineer
​
参数组合
在python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数组合使用。但是参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数
比如一下定义的函数,包含5种参数:
​
def f1(a, b, c=0, *args, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
​
def f2(a, b, c=0, *, d, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)

递归函数

调用函数自身的函数,就是递归函数
阶乘函数n! = 1 x 2 x 3 x ... x n
def fact(n):
    if n == 1:
        return 1
    return n * fact(n - 1)