Python 基础知识笔记

1 下载安装 Anaconda

  • 去官网下载安装包,双击安装包安装,安装路径可自定义安装。
  • 安装完成后设置环境变量,在环境变量中的 path 中添加 Anaconda 的安装路径及路径下的 Scripts 的路径
  • 然后打开 cmd 命令窗口,输入 conda --version 校验是否安装成功
  • 启动 Anaconda ,在电脑搜索的地方搜索 “Jupyter Notebook” 进行启动。

2 基础知识

2.1 print:用于字符串打印

语法:

print(value,...,sep='',end='')
1. 1. value:输入一个或多个要打印的字符串
1. 2. sep:代表可自定义 value 之间的符号,默认为空格
1. 3. end:代表可自定义 value 结尾的符号,默认为换行符号
print('lemon','apple','banana',sep=',',end='.')

2.2 注释与换行操作

单行注释:

print('hello','world') # 向屏幕输出 hello world

多行注释:

'''
先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。
然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。
诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。
'''

"""
宫中府中,俱为一体,陟罚臧否,不宜异同。
若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理,不宜偏私,使内外异法也。
"""

print('侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下。')
print('愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。')
print('将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰能,是以众议举宠为督。')

换行:

print('愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。
亲贤臣,远小人,此先汉所以兴隆也;
亲小人,远贤臣,此后汉所以倾颓也。
先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。
侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之信之,则汉室之隆,可计日而待也。')

2.3 单引号、双引号及转义字符

print('臣本布衣,躬耕于南阳')
print("臣本布衣,躬耕于南阳")
print(''' I'm pythonic,I said:"Practice makes perfect" ''')
print(""" I'm pythonic,I said:"Practice makes perfect" """)

1. 用反斜杠()转义特殊字符
print('n')
print('\n')
1. 可以用 r 和 R 来定义原始字符串
print(r'\n')  # 打印的是 \n
print(R'\n')  # 打印的是 \n

2.4 运算符和数学函数

运算符:

# 乘方
4 ** 4  # 表示4的4次方,结果:256

1. 取整
20 // 6  # 结果:3

1. round 四舍五入
round(8.9)  # 四舍五入保留到整数位
round(10.671,2)  # 四舍五入保留小数点后两位

1. abs绝对值取整
abs(-1)

math 数学函数:

import math
math.ceil(5.01)  # 向上取整
math.floor(5.99)  # 向下取整
math.trunc(10.9)  # 截取整数位
math.pow(2,4)  # 幂运算,表示2的4次方

2.5 字符串

特点:由单引号、双引号、三个单引号、三个双引号 组成

'A' + 'B'  # 结果:AB
'A' * 3  # 结果:AAA

'python'[1]  # 结果:y
'python'[-2]  # 结果:o
'python'[1:4]  # 结果:yth
'python'[2:]  # 结果:thon
  • String.strip([chars]) :

    • chars为空:去除头尾空白符(n、r、t、'',即换行、回车、制表符、空格)
    • chars不为空:将chars拆成一个一个字符,去除头尾指定的字符
  • '   abc123abc   '.strip()  # 结果:'abc123abc' 
    'abc123abc'.strip('ab')  # 结果:'c123abc' 
    'abc123abc'.strip('ba')  # 结果:'c123abc' 
    'eabc123abc'.strip('ba')  # 结果:'eabc123abc' 
    'abc123cba'.strip('bac')  # 结果:'123' 
    'abc12abc3cba'.strip('bac')  # 结果:'12abc3' 
    
  • String.lstrip([chars]) :
  • '   abc123abc   '.lstrip()  # 结果:'abc123abc   ' 
    
  • String.rstrip([chars]) :
  • '   abc123abc   '.rstrip()  # 结果:'   abc123abc' 
    
  • 判断字符串开头结尾字符:
  • 'python'.startswith('p')  # 结果:true 
    'python'.endswith('n')  # 结果:true 
    
  • 返回字符串中字符的位置:
  • 'apple'.find('p')  # 结果:1
    'apple'.index('p')  # 结果:1
    
    'apple'.find('m')  # 结果:-1
    'apple'.index('m')  # 结果:报错
    
  • 字符串替换:
  • 'python'.replace('t','TT')  # 结果:'pyTThon'
    'python'.replace('python','hello')  # 结果:'hello'
    
  • len(S): 返回字符串长度
  • S.count('x'): 查找某个字符在字符串里面出现的次数
  • S.upper(): 将字符串中小写字母,转为大写字母
  • S.lower(): 将字符串中大写字母,转为小写字母
  • S.center(n,'-'): 把字符串放中间,两边用-补齐,n为字符串长度,若n小于字符串长度则返回原值
  • 字符串格式化:% format
    • %s: 使用 str() 函数进行字符串转换
    • %d: 转为十进制整数
    • %f: 转为浮点数
  • 'hello %s' %('world')  # 结果:'hello world'
    'hello %s,%s' %('world')  # 结果:报错
    'hello %s,%s' %('world','apple')  # 结果:'hello world,apple'
    'I am %{name}s, I am %{age}s years old' %{'name':'cily','age':16}  # 结果:'I am cily, I am 16 years old'
    
    'I am %d years old' % (16)  # 结果:'I am 16 years old'
    
    '%f' % (3.14)  # 结果:'3.140000'
    '%.3f' % (3.14)  # 结果:'3.140'
    
    
    'hello {}'.format('world')  # 结果:'hello world'
    'hello {} {}'.format('world','python')  # 结果:'hello world python'
    'hello {1} {0}'.format('world','python')  # 结果:'hello python world'
    'I am {name}, I am {age} years old'.format(name = "cily",age = 16)  # 结果:'I am cily, I am 16 years old'
    

    2.6 Number(数字):整形、浮点型、复数

    Python数字类型:整形(int)、浮点型(float)、复数(complex)、布尔型(bool)

    进制转换:

    • bin 转化为二进制 0b1010
    • oct 转化为八进制 0o12
    • int 转化为十进制 10
    • hex 转化为十六进制 0xa
  • 浮点型(float):
  • type(10)  # int
    type(10.)  # float
    
    print(3+1.0)  # 4.0
    print(type(3+1.0))  # 
    
    1. Python 中相除,默认返回浮点型
    print(3/1)  # 3.0
    print(type(3/1))  # 
    1. 整除
    print(3//1)  # 3
    print(type(3//1))  # 
    
  • 复数(complex):complex([real[,imag]])
  • complex(3,)  # (3+0j)
    complex(3,4)  # (3+4j)
    complex(3,4).real  # 实部,结果:3.0
    complex(3,4).imag  # 虚部,结果:4.0
    complex('3',4)  # 报错
    complex('3+4j')  # (3+4j)
    complex('3 + 4j')  # 报错
    
  • 布尔类型:判断条件是否成立,只有 True、False
  • int(True)  # 1
    int(False)  # 0
    isinstance(1,int)  # True
    isinstance(0,int)  # True
    isinstance(True,int)  # True
    isinstance(False,int)  # True
    
    bool(1)  # True
    bool(0)  # False
    bool(-1)  # True
    bool(None)  # False
    bool()  # False
    bool('')  # False
    bool(' ')  # True
    bool([])  # False
    bool({})  # False
    

    2.7 列表、元组、字典

  • 列表
  • # 创建空列表
    list[]
    []
    
    1. 创建只有一个元素的列表
    [1,]
    [1]
    
    1. 创建包含不同数据类型的列表
    ['a',1,2,3.14,[1,2,3,4]]
    
    1. 列表操作
    ['a',1,2,3.14,[1,2,3,4]][0]  # 'a'
    ['a',1,3.14,[1,2,3,4]][3][2]  # 3
    [1,2] + [3.4]  # [1,2,3.4]
    [1,2] - [3.4]  # 报错,列表间不支持相减操作
    [1,2] * 5  # [1,2,1,2,1,2,1,2,1,2]
    [1,2] / [3.4]  # 报错,列表间不支持相除操作
    
    • list.count(x) : 统计列表中 x 出现的次数,若不存在则返回 0
    • list.append(x) : 向列表尾部追加成员 x
    • list.extend(l): 向列表尾部追加另外一个列表 l
    • list.index(x) : 返回参数 x 在列表中的序号,若不存在则报错
    • list.insert(index, object) : 在列表指定位置插入数据
    • list.pop() : 默认删除列表尾部成员,并返回删除的成员
    • list.remove(x) : 删除列表中指定成员(有多个则只删除第一个),若指定成员不存在则报错
    • list.reverse() : 将列表中的成员顺序颠倒
    • list.sort() : 排序(要求成员间可排序,否则报错)
    x = [1,2,3,4,2,5,3,8,2,9,0,19,2,14,12,34,25]
    x.count(2)  # 4
    [1,2,3].append([7,8,9])  # [1,2,3,[7,8,9]]
    [1,2,3].extend([7,8,9])  # [1,2,3,7,8,9]
    [11,12,13,14].pop()  # 14
    [11,12,13,14].pop(1)  # 12
    
  • 元组(tuple):
  • 元组基本形式:圆括号 () 包围的数据集合,可以通过序号访问元素。一种特殊形式的列表。一但创建不可变。

    【注意】:元组的元素不可变,但当元组元素为列表或字典数据类型时,列表或字典内的内容是可以变的。

    # 创建空元组
    ()
    tuple()
    (1,)  # 创建只有一个元素的元组不能省略这个逗号
    type((1,))  # tuple
    type((1))  # int
    
    a = (1,2,3,[4,5,6])
    a[1] = 10  # 报错
    a[3][0] = 10  # a的值变为 (1,2,3,[10,5,6])
    
    • 元组常见函数:
      • len(tuple) # 返回元组数量
      • max(tuple) # 返回元组最大值
      • min(tuple) # 返回元组最小值
      • tuple(seq) # 将序列转为元组
  • 字典基本操作:
  • {}  # 创建空字段
    dict()  # 创建空字段
    
    fruits = {"lemon":5,"apple":10}
    fruits['lemon']  # 5
    fruits['pear']  # 通过不存在的键访问成员会报错
    
    fruits['lemon'] = 20
    fruits['pear'] = 15
    
    del fruits['pear']  # 删除pear
    fruits.clear()  # 清空整个字典
    
    del fruits  # 删除 fruits
    

    字典的键的数据类型可以是:字符串、数字、元组不可变数据类型,不能为列表类型。

    • dict.copy() # 复制字典
    • dict.get(key,default=None) # 获取key对应的值,若key不存在则返回default
    • dict.items() # 获取由键和值组成的迭代器
    • dict.keys() # 获取键的迭代器
    • dict.values() # 获取值的迭代器
    • dict.pop(key,[default]) # 删除key:value的指定成员对。若key不存在,则返回default
    • dict.popitem() # 从字典末尾删除key:value,并返回key:value
    • dict.update({key:value}) # 从另外一个字典更新成员(存在则覆盖,若不存在就创建。)
    • dict.setdefault(key,default=None) # 若字典存在key,则返回对应的值(不会覆盖原值)。若不存在,则建立一个key:default的字典成员。
    fruits1 = {'lemon':5,'apple':10}
    fruits2 = fruits1.copy()
    fruits1.get('pear','该键不存在')
    fruits1.items()  # dict_items([{'lemon':5},{'apple':10}])
    fruits1.keys()  # dict_keys(['lemon', 'apple'])
    

    2.8 Set集合类型

    集合(set):无序、不重复的数据集合。无法通过键访问成员。可以使用大括号{}或者set()函数创建集合。

    # 注意:创建一个空集合必须用 set() 而不是 {},因为 {} 是创建一个空字典。
    type(set())  # set
    
    a = {1,2,3,4}
    type(a)  # set
    
    b = {1,1,3,3,2,2,4,4}  # 最终 b 的值为 {1,3,2,4}
    
    c = ['lemon','lemon','apple','apple']
    set(c)  # 去重,结果:{'lemon','apple'}
    
    d = {1,2,3,4,5,6}
    len(d)  # 6
    1 in d  # True
    7 in d  # False
    
    d - a  # 得出集合间的差集 {5,6}
    d & a  # 得出集合间的交集 {1,2,3,4}
    d | a  # 得出集合间的并集 {1,2,3,4,5,6}
    

    2.9 Python 基本数据类型总结

  • 数字(Number):整型(int)、浮点型(float)、复数(complex)、布尔型(bool)
  • 序列:列表(可变序列)、字符串(不可变序列)、元组(不可变序列)
  • 字典:无序,没有索引,通过键值对访问,键是不可变的
  • 集合:无序,没有索引,没有重复元素
  • 2.10 变量

    命名规则:只能包含字母、数字、下划线,不能以数字开头。最好用小写字母。

    关键字:

    False、class、finally、is、return、True、continue、for、lambda、try、None、def、from、nonlocal、while、and、del、global、not、with、as、elif、if、or、yield、assert、else、import、pass、break、raise、except、in

    2.11 运算符

  • 算术运算符: + - * / % // **
  •   a = {1,2,3,4}
      b = {1,2}
      a - b  # 得出集合间的差集 {3,4}
    
      'python ' * 3  # 字符串 'python python python '
      [1,2,3] * 3  # 列表 [1,2,3,1,2,3,1,2,3]
      (1,2,3) * 3  # 元组 (1,2,3,1,2,3,1,2,3)
    
      10 // 3  # 取整运算 3
      10.0 // 3  # 取整运算 3.0
    
  • 赋值运算符:= += -= *= /= %= //+ **=

  • 比较(关系)运算符:== != => random_num: print('大了') elif guess_num0: lemon = 5 print(lemon) # 5 for i in range(10): lemon = 9 print(lemon) # 9 i = 1 while i=3,n∈N*)

    # 实现:用户输入任意数字,返回第N项数字
    def fib(num):
      if num 5]
    b  # [6,7,8,9]
    
    num = int(input('请输入数字:'))
    fibs_list = [fib(i) for i in range(1,num+1)]
    fibs_list  # 
    

    2.19 面向对象