学习笔记"/>
小白第一月Python学习笔记
前言
记录一下自己学py的过程。自认为教一个人最好的就是自己刚学完的时候,我还清楚的记得所有初学者会产生的疑惑,所以趁热打铁写了一份教程,但编程环境的配置我就不多赘述了,个人用的Pycharm,可以自己去网上找相关教程配置。
感兴趣的朋友学习时,一定要边敲边看输出结果,仔细理解注释,知识才不容易溜走。
输出函数_转义字符
print('---输出函数print()---')
# 输出函数print():可输入数据类型包括数,运算式,字符串,默认参数规定不换行输出多个对象
print(2)
print(1+1)
print('good morning')
print('你好')
print('02', 7, 'rain')print('---关键字参数file---')
fp = open('/text1.txt', 'a+')
# 设置变量fp
# 调用函数open以创建/增写的形式(a+)打开文件
# 注意分隔,盘/文件夹/文件
print(0.2, 'rain', file=fp) # 以关键字形式传递print函数的参数file,规定要读写的文件对象fp
fp.close() # 关闭文件print('---转义字符---')
# 转义字符:有些字母或符号有特殊含义(如\ ,'',n),对 与特殊符号相同的 字符串内容进行注释的字符就是转义字符
print('02\nln2') # \n:换行=>newline
print('02\rln2') # \r:回车,返回起点覆盖=>return
print('02\tln2') # \t:水平制表符,补全/增加1个制表位(4个字符)的空位=>tad
print('02\bln2') # \b:退格,退1格位置,并覆盖邻近字符=>back
# 引号表示字符串内容print(r'---多个\的作用---')
print('http:\\\\www.baidu') # 转义 输出 转义 输出
print('http:\\\www.baidu') # 转义 输出 一体字符
print('我说:\“局座高见。\”') # 转义 转义print('---原字符---')
# 原字符:无效在字符串中的所有转义字符
print(r'\rain')
print(R'\rain')
print(R'\rain\\')
# 字符串不能以奇数个的反斜杠结束
编码_变量_数据类型_注释
# 字节bit:八位二进制(1024进制,千字节KB、兆字节MB、吉字节GB、太字节TB),表示2^8=256种状态
# ASCII字符代码表(二字码表):0~31为非打印控制字符(人脸、方心梅桃、上下左右、音符、雌雄),32~127为打印字符(标点、字母大小写、数字、运算符),形状与含义无关,剩余128预留给国外使用
# GB2312:1980年后推出,表示简体中文,7445个汉字
# GBK:1990年后推出,表示简体和繁体中文
# GB18030:2000年后推出,表示简/繁体中文、维吾尔文、藏文,共17484个字符,每个字符可由1、2、4个字节组成
# Unicode:业界字符表示标准,所有语言用2个字节表示,即16进制
# UTF-8:英文1个字节表示(二字码表),中文用3个字节表示print('''---二进制->str->十进制---''')
# 翻译二进制的字符串函数chr(0b)=>charcode
print(chr(0b100111001011000))
# 编码十进制的字符串函数ord()=>order
print(ord('乘'))# 标识符:对象的命名,只能使用汉字、字母、数字、下划线,不能使用保留字,不能数字开头,严格区分大小写
# 保留字:给任何对象命名都不可用的单词
print('---查看保留字---')
import keyword
print(keyword.kwlist)
# 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except'
# 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield', 'for', 'from', 'global'
# 'False', 'None', 'True', 'and', 'as', 'import', 'in', 'is', 'lambda', 'nonlocal','finally', 'if'print('---变量---')
# 变量:通过赋值运算符'='对变量名赋值,由标识(存储对象的内存地址),类型(对象的数据类型),值(对象的具体数据)
# 可分别使用内置函数id,type获取,print打印输出
rain = '雨'
print(rain)
print('标识', id(rain))
print('类型', type(rain))
print('值', rain)# 变量的多次赋值:变量名指向新空间,原空间转为内存垃圾
wind = '风'
print(wind)
wind = '巽'
print(wind)print('---数据类型---')
# 数据类型:整数int(2),浮点数float(0.2),布尔bool(True,False),字符串string('thunder')
# 整数:integer,可表示正数、负数、零,十进制(默认),二进制(0b开头),八进制(0o),十六进制(0x)
print('---整数---')
n1 = 2
n2 = -1
n3 = 0
print(n1, type(n1))
print(n2, type(n2))
print(n3, type(n3))
print('十进制', 115)
print('二进制', 0b1101101)
print('八进制', 0o175) # 不能超过7
print('十六进制', 0x19AF) # 0~9,A~F# 浮点:由整数部分和小数部分组成,存储不精确性--计算时可能出现小数位数不确定(导入模块decimal即可)
print('---浮点---')
r = 3.1415
print(r, type(r))r1 = 1.1
r2 = 2.2
print(r1+r2)from decimal import Decimal
print(Decimal(str(r1))+Decimal(str(r2))) # 输入str,输出decimal.Decimal# 布尔:Boolean,表示真假,可转整数(T=1,F=0)进行运算
print('---布尔值---')
t = True
f = False
print(t, type(t))
print(f, type(f))
print(t+1)
print(f+1)# 字符串:不可变字符序列,单双引号定义的字符串必须同行,三引号定义的字符串可跨行
print('---字符串---')
str1 = "嘤嘤"
str2 = '嘤嘤' # 必须用英文输入引号,长按shift切换单双
str3 = '''嘤嘤
嘤嘤嘤'''
str4 = """嘤嘤
嘤嘤嘤"""
print(str1, type(str1))
print(str2, type(str2))
print(str3, type(str3))
print(str4, type(str4))# 数据类型转换:'+' 可拼接序列,拼接的对象必须是同数据类型,可用函数int、float,bool,str转换数据类型
print('我有'+str(n3)+'个女朋友')
# 一般统一转换成str,因为兼容性强
print(int(r2)) # 即高斯函数
print(float(t), float(n1)) # 整数转换后加’.0‘
# int函数转换的string的内容必须为integer,float函数转换的string的内容必须为number# 注释:内容会被解释器忽略,可用于局部代码invalid
# 单行注释--’#‘开头,换行结束。
'''多行注释--
一对三引号之间的代码
出现在file top时一般用于注释docstring,即描述用途/作用的总注释'''
# 中文编码声明:在file top注释'# coding:(编码表小写,eg.utf-8,gbk)'
输入函数_运算符
print('---输入函数input---')
# 可执行输入的交互程序
name = input('还记得你的名字吗?')
print(name)# 加法
n1 = input('输入两个整数求和\n')
n2 = input()
print(int(n1)+int(n2)) # input输入数据类型默认为str,转化为数值才可运算
# 最简优化
print(int(input('输入一个加数'))+int(input('输入另一个加数')))print('---算数运算符---')
# 算数运算符:输入数值(int,float,bool)或计算式,输出value
# 整数四则运算
print(1+2)
print(1-2)
print(1*2)
print(2/1) # 一定输出浮点数,结果是整数也带.0
# 整除
print(11//2) # =5
print(11//-2) # 即高斯函数,向下取整=-6
# 取余
print(11 % 2) # =1
print(9 % -4) # 商向下取整=-3,余数=被除数-除数*整除商=-3
print(-9 % 4) # =3
# 求幂
print(2**3)print('---赋值运算符---')
# 赋值:右式赋左量,支持链式/参数/系列解包赋值,运算符为'='
# # 链式赋值:变量共用id(内存地址),即指向的内存空间相同
a = b = c = 0
# # 参数赋值:x ±= i <=> x = x±i,同理适用于/,*,//,%
a **= 2
# # 系列解包赋值:左右value数量不同则无法解包并报错,但左侧可存在相同变量,按从左到右顺序赋值
a, b, c = 1, 2, 3
a, b = b, a # 交换变量值:a=2,b=1print('---比较运算符---')
# 比较运算符:输入有值数据/代式,输出bool。其中<,>,<=,>=,==,!=(不等于),比较value;而is,is not,比较id
list1 = [1, 2, 3, 4]
list2 = [1, 2, 3, 4]
# 同值数组id不同,因为数组有专有空间,修改时不同步;但是同值数值的id相同
print(list1 == list2) # =是赋值运算符,==是比较运算符
print(list1 is list2)
print(1 is 1)
# 集合与元素的值总不相同
list3 = [1]
print(list3 == b, b, list3)print('---布尔运算符---')
# 布尔运算符;输入/输出均为bool,包括and,or,not,&,|,即”与或非“;输入元素和序列,输出bool,包括in, not in,即(不)包含于
t = True
f = False
print(a == 2 and b == 1)
print(a != 2 or b != 1)
print(not b == 1) # 对bool操作数取反
r = 'rain'
print('r' in r)
print('v' not in r)
print(2 in list1)
print([2, 5] not in list1)print('---位运算符---')
# 位运算符:将int,bool转为二进制进行计算,包括&,|,<<,>>,即按位与,按位或,左移位,右移位
'''
&/|:对两个数据的0b的同位取与/非,得到一个新的0b,并输出十进制int
<</>>:0b位数由左向右降序排列,左移位则高位溢出,低位补零,3<<4 <=> 3*2^4;右移位则反之,3>>4 <=> 3//2^4
'''
print(t | 0x1F)
print(0o17 << 0b10)
print(4//2 >> 1*2) # '/'输出float# 运算优先级:算术(幂>乘除>加减)>位(移位>与>或)>比较>布尔(与>或)>赋值(=)
列表
print('---list---')
'''
列表:存储多个元素以方便对一组数据整体操作,是二级指针,相当于其他语言的数组
变量:引用一个元素,只存储一个元素,是一级指针
属性:id独立,type为list,值为集合
特点:元素有序排序,索引映射唯一,可存重复数据,任意类型混存,
'''
# 赋值创建
list1 = [2, 2, 'rain', 0.2, True, [1, 0]]
# 引用创建
list2 = list([])# 索引
'''可对str,list使用,用于调出元素。0,1,2……是从左到右的正向索引,-1,-2,-3,……是从右到左的逆向索引
性质:只返回相同元素中第一个(正向)元素的索引所查询元素不存在则报ValueError可在指定区间(start&stop)查找
'''print('---查询---')
print(list1)print('rain'[0])
print(list1[-2])'''
获取多个元素时,称为切片,其结果是原列表片段的拷贝
切片区间无大小限制,但步长不为0
'''print(list1[1:5:2]) # 查询索引range(1, 5, 2)的元素,以列表形式输出
print(list1[1:-1:2]) # 索引-1 == 5,故指令等价
print(list1[1:5]) # 默认步长为1
print(list1[1:5:])
print(list1[:5:2]) # 步长为正,默认start为0
print(list1[:5:-2]) # 步长为负,默认start为-1
print(list1[1::2]) # 步长为正,默认stop为-1
print(list1[1::-2]) # 步长为负,默认stop为0print('---返回索引---')
print(list1)print(list1.index(2))
print(list1.index(2, 0, 2)) # 返回索引range(2)内元素2的索引
print(list1.index(2, -6, -4)) # 仍然正向输入区间,返回值也遵循0-N
print(list1.index(2, 0)) # 返回索引0处元素2的索引print('---判断与遍历---')
print(list1)print(2 in list1)
print(3 not in list1)
for i1 in list1:print(i1, end=' ')print('\n---添加元素---')
# 添加元素(列表id不变):append,extend,insert,切片
list3 = [0, 1, 2]
list4 = ['a', 'b', 'c']
print(list3)
print(list4)list3.append(3) # 只能在列表末尾添加一个元素
print(list3)
list3.append(list4) # 把列表整体作为一个元素添加,list4修改时list3同时变化
print(list3)
list3.extend(list4) # 在列表末尾添加另一列表内的所有元素
print(list3)
list3.insert(1, 'd') # 在列表指定索引处添加一个元素,后续元素索引+1
print(list3)
list4[1:] = list4 # 把列表索引range(1, 2)的切片替换为list4内的元素
print(list4)print('---删除元素---')
# 删除元素:remove,pop,clear,del
list5 = [0, 1, 2, 0]
print(list5)list5.remove(0) # 删除一个元素,重复元素只删除第一个(正向),元素不存在则ValueError
print(list5)
list5.pop(1) # 删除一个指定索引上的元素,索引不存在则IndexError
print(list5)
list4.pop() # 无指定默认删除最后一个
print(list4)
new_list1 = list4[1:2] # 切一个删除了无用元素的新表,但id变了
print(new_list1)
list5[1:] = [] # 把列表索引range(1, 2)的元素删除
print(list5)
list5.clear() # 清空列表,括号必须为空
print(list5)
del list5 # 删除列表print('---修改元素---')
# 修改元素
print(list3)
print(list4)list4[0] = 1 # 修改一个指定索引上的元素
print(list4)
list3[1:5] = [10, 20, 30] # 修改一个切片范围上的元素,范围不限
print(list3)
print('---排序---')
# 排序:id不变,注意数据类型--sort,sorted
list1 = [2, 0, 1, 1.0, True, False]
print(list1)list1.sort() # 升序排序:reverse=False('='周围不空格)
print(list1) # 不支持str/NoneType与num之间的排序,同值时,int<float<bool
list1.sort(reverse=True) # 降序排序:reverse=True
print(list1) # 注意,int>float>bool,故相对位置不变list1 = ['小水', '大水', '雨', 'c', 'ab', 'a', 'b', '?', '!']
list1.sort()
print(list1) # 英文按字母表升序排列,同单词表排序规则;中文转化为拼音,规则同前,但符号<英文<中文'''内置函数:无需载入,直接使用'''
new_list2 = sorted(list1, reverse=bool(0)) # 产生新的排序列表
print(new_list2)# 列表生成式:生成列表的公式,格式为--[元素运算式 for 自定义变量 in 可迭代对象]
list1 = [i**2 for i in range(5)]
print(list1)
更多推荐
小白第一月Python学习笔记
发布评论