Python ( 学习 基础篇第一部 )
目录
注释的分类
注释的注意点
变量的概念
变量的声明
变量的命名
变量的交换
变量的缓存机制
常量
进制的转换
原码 反码 补码
Number 的四大类
字符串 str
列表 list
元祖 tuple
集合 set
字典 dict
占位符
Number的强制转换( int flost bool coplex )
Number的自动转换( int flost bool coplex )
容器类型数据的强制转换 ( str list tuple set dict )
二级容器与等长的二级容器( list tuple set dict )
注释
注释: 就是对代码的解释,说明,方便后期对代码的修改与阅读
注释的分类
- 单行注释: 用一个单引号或者一个双引号包括起来
- 多行注释: 用三个单引号或者三个双引号包括起来
注释的注意点
- 多行注释可以进行换行
- 多行注释内外的引号不可以相同
- 利用注释具有一定的排错性
变量
变量: 可以改变的量, 实际上是内存中开辟的一块空间
变量的概念
liuun = "学峰'
变量的声明
#1
a = 100
b = 200
print(a)
print(b) #2
a,b = 10,20
print(a,b)
#3
a = b = 400
print(a,b)
变量的命名规则
- 字母数字下划线, 首字符不能为数字.
- 严格区分大小写, 且不能使用关键字.
- 变量命名有意义, 且不能使用中文哦.
变量的交换
通用写法:
a = 13
b = 14
tmp = a # tmp = 13
a = b # a = 14
b = tmp # b = 13
print( a , b ) # 14 13```
Python特有写法:
a = 12
吧 = 13
a,b = b,a
print(a,b)
变量的缓存机制
只有两个值相同,就只开辟一个空间
- Number 部分
对于整型而言,-5~正无穷范围内的相同值 id一致
对于浮点数而言,非负数范围内的相同值 id一致
布尔值而言,值相同情况下,id一致
复数在 实数+虚数 这样的结构中永不相同(只有虚数的情况例外) - 容器类型部分
字符串 和 空元组 相同的情况下,地址相同
列表,元组,字典,集合无论什么情况 id标识都不同 [空元组例外]
常量
不变量( 约定俗称,大写格式,这个值不能改变)
进制
b = bit 位(比特)
B = Byte 字节
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
1EB = 1024PB
进制的转换
二进制:由2个数字组成,有0 和 1
0b 代表2进制
八进制:由8个数字组成,有0,1,2,3,4,5,6,7
0o 代表8进制
十进制:有10个数字组成,有0,1,2,3,4,5,6,7,8,9
十六进制:有16个数字组成,有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e
0f 代表16进制
原码 反码 补码
码
原码:二进制表现的形式
反码:二进制码0 变1 ,1变 0 叫做反码,[原码][补码]之间的转换形式.(首位符号位不取反)
补码:二进制的储存形式
提出补码的原因
补码的提出用于表达一个数的正负( 为了实现计算机的减法运算操作)
计算机默认只能做加法, 实现减法用负号: 5+(-3) => 5-3
乘法除法:是通过左移和右移 << >> 来实现
原码形式的正负关系
原码的特点:第一位是1
00000000 1 表达数字正1
10000000 1 表达数字负
补码形式的正负关系
补码的特点: 高位都是1
00000000 1 表达数为正1
11111111 1 表达数为负1
运算顺序
补码 > 原码 > 最后人们可以看到的数
转换规律
如果是一个正数: 原码 = 反码 = 补码
如果是一个负数: 原码 与 反码 之间 , 互为取反加1
原码 = 补码取反加1 给补码求原码
补码 = 原码取反加1 给原码求补码
转码
5
原码: 0000 ... 101
反码: 0000 ... 101
补码: 0000 ... 101 -3 (原码中,左边第一个高位,标记的是符号)
原码: 1000 ... 011
反码: 1111 ... 100
补码: 1111 ... 10 在底层用补码做运算
0000 ... 101 => 5
1111 ... 101 => -3
0000 ... 010 => 2
总结:
高位0 代表正数, 高位1 代表负数 (原码)
计算机在运算时,用补码在运算
如果是正数: 补码 = 反码 = 原码
如果是负数: 原码 = 补码取反 +1 (原码补码, 互为取反+1)
源码是用来显示的 补码是用来存储或者运算的
六大数据类型
1.Number
2.字符串类型 str
3.列表类型 list
4. 元祖
5. 字典
6. 集合
(2.3.4.5.6.)属于容器类型数据
Number 的四大类
int 整型
intvar = 123
print(intvar)
float 浮点型
floatvar = 4.88
print(floatvar)
bool 布尔型
boolvar = True
boolvar = False
print( boolvar )
print( type(boolvar) )
coplex 复数型
complex 实数 + 虚数
3+4j
3: 实数
4j: 虚数
字符串 str
字符串的特点:
可获取, 可修改,有序.
单引号引起来
strvar = '今天是开课的第二天的是字符串'
双引号引起来的字符串
strvar = “文哥是这个世界上,\n我认为最帅的男人”
三引号引起来的字符串 ‘’’ “”"(支持跨行的效果)
strvar = ‘’’
我感觉我走错了房间,
貌似python31的同学是’祖安’服务器请来的"救兵"
‘’’
字符串原型化输出
#元字符串 r"字符串" 不转义字符,原型化输出字符串
strvar = r"E:\nython31\tay2"
print(strvar) #格式次付出
#语法 : “字符串” % (值1,值2,值3)
%d 整型占位符
%f 浮点型占位符
%s 字符串占位符
列表 list
列表的特点:
可获取, 可修改,有序
#定义一个空列表
listvar=[] #定义一个普通的列表
listvar = [100,19.123,True,1+12j,"马生平"] #获取列表当中的值
listvar= [100,19.123,True,1+12j,"马生平"]
res = listvar[2]
res = listvar[-3]
print(res) #修改列表当中的元素
listvar[-3] = False
print(listvar)
元祖 tuple
元祖的特点:
可获取,不可修改, 有序 (逗号是区别元祖的标识符 )
# 定义一个空元祖
tuplevar = ()
print(tuplevar , type(tuplevar)) #获取元祖中的元素
res = tuplevar[1]
res = tuplevar[-1]
print(res)
集合 set
集合的特点:
无序 自动去重
# 定义一个空jihe
setvar = {}
setvar = set()
print(setvar , type(setvar)) # 定义一个集合
setvar = {"金城武","王俊凯","喻文波","王文"}
print(setvar , type(setvar)) # 自动去重
setvar = {"金城武","王俊凯","喻文波","王文","王文","王文","王文"}
print(setvar)
字典 dict
字典的特点:
键值对 储存的数据,表面上有序,实际上无序
# 定义一个空字典
dictvar = {}
print(dictvar , type(dictvar)) #定义一个字段
dictvar = {"智多星":"吴用","花和尚":"鲁智深","浪里白条":"张顺"} # 获取字典中的值
dictvar = {"智多星":"吴用","花和尚":"鲁智深","浪里白条":"张顺"}
res = dictvar["智多星"]
print(res) # 修改字典中的值
dictvar = {"智多星":"吴用","花和尚":"鲁智深","浪里白条":"张顺"}
dictvar["智多星"] = "吴用"
print(dictvar)
字典的键和集合的值数据类型要求是( 可哈希的,不可变的)
不可变数据:
Number str tuple
可变数据:
list set dict
关于哈希:
但凡提到哈希算法( hash) ,都是都是典型的无序特征.
目的为了更加均匀的吧数据分配到内存里,底层用的算法类似于取模,
Python3.6 版本以后,对字典做了优化,存储数据的时候用好像算法
但是在拿出数据的时候,重新按照定义字典时的顺序进行重新排序
所有看起来有序,实际上无序.
占位符
%d 整型占位符
strvar = “王金刚学习容易走神,买了%d个风油精,提神醒脑” % (5)
print(strvar)
%2d 占两位 原字符串默认居右
strvar = “白星今天%d岁” % (3)
print(strvar)
strvar = “白星今天%2d岁” % (3)
print(strvar)
%-2d 占两位 原字符串默认居左
strvar = “白星今天%-2d岁” % (30000)
print(strvar)
%f 浮点型占位符
strvar = “马春陪一个月开了%f工资” % (9.9)
print(strvar)
%.2f 小数点保留2位
strvar = “马春陪一个月开了%.2f工资” % (9.9)
print(strvar)
%f 存在四舍五入的情况
strvar = “马春陪一个月开了%.1f工资” % (9.876542342)
print(strvar)
%s 字符串占位符
strvar = “%s” % (“python31的同学们都有祖安人民的特质”)
print(strvar)
类型的转换
Number的强制转换( int flost bool coplex )
var1 = 13
var2 = 13.789
var3 = True
var4 = 5-7j
var5 = “9988”
var6 = “abcd4567” # int强转换成整型
res = int(var2) # 13
res = int(var3) # False => 0 True => 1
res = int(var4) error
res = int(var5) # 9988
res = int(var6) error
print(res , type(res)) # float 强转换成浮点型
res = float(var1) # 13.0
res = float(var3) # True => 1.0 False => 0.0
res = float(var5) # 9988.0
print(res , type(res)) # complex 强制转换成复数
res = complex(var1) # 13 + 0j
res = complex(var2) # 13.789 + 0j
res = complex(var3) # False => 0j True => 1+0j
res = complex(var5) # 9988 + 0j
#res = complex(var6) error
print(res , type(res)) # bool 强制转换成布尔值
res = bool(None)
print(res , type(res))
bool为False的十种情况
0 , 0.0 , False , 0j , ‘’,[],(),set(),{},None
默认创建一个该数据类型的值
int() float() bool() complex()
res = int()
res = float()
res = bool()
res = complex()
print(res)
Number的自动转换( int flost bool coplex )
精度从低到高进行转换:
bool -> int -> float -> complex
bool + int
res = True + 100 # 1 + 100
print(res)
bool + float
res = True + 4.15 # 1.0 + 4.15
print(res
bool + complex
res = True + 3-6j # 1+0j + 3 - 6j
print(res)
int + float
res = 5 + 3.48 # 5.0 + 3.48
print(res)
int + complex
res = 10 + 4-3j # 10 + 0j + 4 - 3j
print(res)
float + complex
res = 5.68 + 5-100j # 5.68+0j + 5 - 100j
print(res)
容器类型数据的强制转换 ( str list tuple set dict )
strvar = ‘雷霆嘎巴,无情哈拉少,ZBCC’
listvar = [“曹晨光”,“温子月”,“吴洪昌”]
tuplevar = (“高学峰”,“葛龙”,“孙京华”,“白星”)
setvar = {“李志辉”,“马春陪”,“刘鑫炜”}
dictvar = {“lzh”:“气质非凡”,“mcp”:“高大威猛”,“lxw”:“气宇轩昂”} str (容器 / Number 都可以转换)
强转成字符串,无非就是在原有的数据的基础上两边套上引号
list : 强制转换成列表
如果是字符串,会把每一个字符单独的作为一个元素放到列表中
如果是字典,只保留键,形成一套新的列表
如果是其他的容器,只是单纯的在原有数据的基础上换上[]
tuple : 强制转换成元组
如果是字符串,会把每一个字符单独的作为一个元素放到元组中
如果是字典,只保留键,形成一套新的元组
如果是其他的容器,只是单纯的在原有数据的基础上换上()
set : 强制转换成集合(自动去重)
如果是字符串,会把每一个字符单独的作为一个元素放到集合中(无序,自动去重)
如果是字典,只保留键,形成一套新的集合
如果是其他的容器,只是单纯的在原有数据的基础上换上{}
repr 可以原型化输出字符串,不转义字符(显示出引号)
print( repr(res) )
二级容器与等长的二级容器( list tuple set dict )
二级容器
二级列表
lst = [1,2,[3,4]]
二级元组
tup = (5,6,7,(8,9))
二级集合
setvar = {10,11,(12,13)}
二级字典
dic ={“a”:1,“b”:{“c”:3,“d”:4}}
等长的二级容器
里面的元素都是容器,并且容器里面的元素个数都相同
lst = [(1,2,3) , [4,5,6]]
lst = [(1,2) , [4,5]]
二级容器强转字典
强转成字典时 , 必须是等长的二级容器,里面的元素个数是2个
(1)外层是列表或者元组或者集合,里面的容器是元组或者列表(推荐)
lst = [("a",1),["b",2]]
tup = (("c",3),["d",4],)
setvar = {(1,2),(3,4),("f3",3),("f4",4)}
res = dict(lst) # {'a': 1, 'b': 2}
res = dict(tup) # {'c': 3, 'd': 4}
res = dict(setvar) # {1: 2, 'f3': 3, 3: 4, 'f4': 4}
(2)如果里面是集合,语法上是允许的但是所有局限性
lst = [{“a”,333},{“zz”,5}] # 因为集合无序,不符合定义的本意,不推荐使用
print(dict(lst))
(3)如果是字符串,语法上也是可以的但是有局限性
lst = [(“a”,1),“b2”] # 字符串长度只能2个
lst = [(“a”,1),“b23”] error
print( dict(lst) )
变量的缓存机制
只有两个值相同,就只开辟一个空间
- Number 部分
对于整型而言,-5~正无穷范围内的相同值 id一致
对于浮点数而言,非负数范围内的相同值 id一致
布尔值而言,值相同情况下,id一致
复数在 实数+虚数 这样的结构中永不相同(只有虚数的情况例外) - 容器类型部分
字符串 和 空元组 相同的情况下,地址相同
列表,元组,字典,集合无论什么情况 id标识都不同 [空元组例外]
Python ( 学习 基础篇第一部 )的更多相关文章
- Python ( 学习基础篇 第二部 )
目录 运算符 算数运算符 比较运算符 赋值运算符 位运算符 逻辑运算符 成员运算符 身份运算符 Python 中运算符的优先级 运算符总结基础语法 判断类型 isinstence 代码块 流程控制 w ...
- Python学习—基础篇之文件操作
文件操作 文件操作也是编程中需要熟练掌握的技能,尤其是在后台接口编写和数据分析过程中,对各种类型的文件进行操作,获取文件信息或者对信息进行存储是十分重要的.本篇博客中将主要对常见的文本格式文件和Exc ...
- Python学习——基础篇
1.python的安装 python下载地址:https://www.python.org/downloads/ 安装完成后,运行cmd.exe,输入python 如果出现“p ...
- Python学习—基础篇之基本数据类型(二)
Python中重要的数据结构 1.列表 2.元组 3.字典 4.集合 列表 1.创建列表 # 方式一 name = [] print(type(name)) # 执行结果 >>> & ...
- Python学习—基础篇之基本数据类型(一)
数据类型 在python中,能够直接处理的基本数据类型主要有数字类型.字符串类型.字节类型.布尔类型.列表.元组.字典.集合等. 一.数字类型 1.1 数字类型的创建 # 数字类型 a = 10 b ...
- Python学习—基础篇之常用模块
常用模块 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要 ...
- Python学习---基础篇
###打开文件并打印: #!/usr/bin/python3 f = open('F://myproject/test.txt', encoding='utf-8',mode='r') content ...
- Docker虚拟化实战学习——基础篇(转)
Docker虚拟化实战学习——基础篇 2018年05月26日 02:17:24 北纬34度停留 阅读数:773更多 个人分类: Docker Docker虚拟化实战和企业案例演练 深入剖析虚拟化技 ...
- Python学习基础笔记(全)
换博客了,还是csdn好一些. Python学习基础笔记 1.Python学习-linux下Python3的安装 2.Python学习-数据类型.运算符.条件语句 3.Python学习-循环语句 4. ...
随机推荐
- 面试官写了个双冒号: : 问我这是什么语法?Java中有这玩意?
一:简洁 方法引用分为三种,方法引用通过一对双冒号:: 来表示,方法引用是一种函数式接口的另一种书写方式 静态方法引用,通过类名::静态方法名, 如 Integer::parseInt 实例方法引用, ...
- Oracle学习(十四)分表分区
一.前言 大数据量的查询,不仅查询速度非常慢,而且还会导致数据库经常宕机,在尝试添加索引及查询方式修改后,还有没有更有效的解决方案呢? 分库.分表.分区这些概念咱就应该了解一下. 二.分表 假如一个大 ...
- xss的编码原理
把以前的笔记翻出来整理一下 最前方 xss如何选用编码原理,为什么 找到的挺清楚的文章了:https://www.cnblogs.com/p0laris/p/11898322.html浏览器解析有两种 ...
- 中秋礼物!开源即时通信GGTalk安卓版全新源码!
经过连续两个多月的努力(开发.调试.测试.改bug),我们终于赶在中秋国庆之前能把全新的GGTalk Android版本献给大家. 4年之前我们就推出了GGTalk Android的第一个版本,但是功 ...
- 嵌入式arm-linux mips-linux 交叉编译GDB,结合vscode图形化调试使用,coredump定位段错误
第一部分:使用GDB GDB源码下载路径:http://ftp.gnu.org/gnu/gdb/ 遇到的主要难点: 选择合适的GDB源码版本 我的mips-linux交叉编译器不支持C++11特性,所 ...
- 【Python】数据结构
列表的更多特性 list.append(x) 在列表的末尾添加一个元素.相当于 a[len(a):] = [x] . list.extend(iterable) 使用可迭代对象中的所有元素来扩展列表. ...
- plt.imshow()显示图片色差问题
转载:https://www.cnblogs.com/darkknightzh/p/6039667.html 由于系统缺少某些库,导致cv2.imshow()无法使用,于是使用matplotlib.p ...
- C++ | 继承(基类,父类,超类),(派生类,子类)
转载:https://blog.csdn.net/Sherlock_Homles/article/details/82927515 文章参考:https://blog.csdn.net/war1111 ...
- VS2015建立一个完整的c++工程:头文件.h 源文件.cpp,自动生成类
https://blog.csdn.net/weixin_40539125/article/details/81430801 打开VS2015 ,新建VS win32工程,前面步骤很简单,不再阐述 下 ...
- 【题解】CF375D Tree and Queries
Link \(\text{Solution:}\) 讲实话这题有点烦,不知道为啥改了下\(\text{dfs}\)就过了--原版本\(dfs\)好像没啥错啊-- 其实对于子树问题,我们求出原来树的\( ...