python基础

1.数字类型(int float bool complex)

小结:

二进制1+1=10
八进制7+1=10
十六进制f+1=10

浮点型简单来说就是表示带有小数的数据,而恰恰小数点可以在相应的二进制的不同位置浮动,可能是这样就被定义成浮点型了。

2.字符串(str)类型

”’

有引号的就是字符串,单引号,双引号,三引号

转义字符\ +字符

(1)可以将无意义的字符变得有意义

(2)可以有意义的字符变得无意义

\n: 换行

\r\n:换行

\t : 缩进(水平制表符) 默认四个空格距离

\r : 将\r 后面的字符串拉到了当选行的行首

”’

python中单引号双引号没有区别 但是在其他语言中有区别

比如说php

r”字符串” 原型化输出字符串

比如说小张买了三个药水 李四买了 四个药水 张三买了五个药水 你会发现 这些话整体来说除了数量在改变 字符串并没有改变

3.列表类型 (list)

定义一个空列表

定义普通列表

获取列表中的元素

在python分为 正向索引和逆向索引

正向索引 (从0开始) 0 1 2 3 4 ……

0 1 2 3 4

-5 -4 -3 -2 -1

逆向索引 (只有python可以)(从-1开始) -1 -2 -3 -4 -5

len() 获取容器类型数据中元素的个数

python逆向索引的特点,瞬间得到列表最后一个索引

修改列表中的元素

4.元组类型(tuple)

特征:只能获取,不可以修改,有序

定义一个元组

获取元组中的元素

正向索引

逆向索引

修改元组中的元素 :元组中的值不能修改

注意点

我们发现下面打印结果并不是元组类型

接下来我们看下一个

我们发现添加个逗号 打印结果是元组类型

总结逗号 才是区分是否是元组的标识符

定义空元组

这个打印结果也是元组 但是没加逗号 这是为什么呢 ?

因为里面没有值 是一个空元组

字符串类型 (补充)

”’

特征:可获取,不可修改,有序

”’

正向索引

我们发现 空格和符号都占有一个索引位置

5.集合类型 set(交差并补)

我们打印发现每次的结果都不一样,所以说 集合无序

获取集合中的元素

获取我们发现报错 那是为什么呢?

刚刚说过集合是无序的所以说 没有办法按照索引来获取集合中的元素

接下来再看几行代码

我们打印完发现 原本集合中有两个Sam 却只输出了一个Sam 这说明集合具有 自动去重功能

我们再看看下面的代码 看看可不可以定义 空集合

打印结果报错 显然这样是不可以定义空集合的 ,接下来让我们看看如何定义一个空集合?

打印返回集合类型 定义空集合只需要set+()只有这 种方法可以创建空集合

总结:

6.字典类型 (dict)

”’

键值对存储的数据

dictvar = {键1:值1,键2:值2,……}

3.6版本之前,完全无序

3.6版本之后,存储的时候,保留了字典定义的字面顺序,在获取内存中的数据时重新按照字面顺序做了排序,所以看起来有序,实际上存储时还是无序。

”’

接下来我们 创建一个字典

获取 字典中的值

修改 字典中的值

定义空 字典

重要setdict 的注意点

”’

字典的键和 集合的值 有数据类型上面的要求:

允许的类型范围)不可变的数据类型: Number str tuple

不允许的类型)可变的数据类型 : list set dict

字典的键有要求值没有要求

字典的值可以任意换掉,但是键不可以。键就相当于一个人的身份证号

哈希算法的提出目的是让数据尽量均匀的在内存当中分配,以减少哈希碰撞,提升储存分配的效率;哈希算法一定是无序的散列,所以集合 和字典 都是无序的

”’

字典允许的类型范围

集合允许的内容

定义:
把不可变的任意长度值计算成固定长度的唯一值,这个值可正可负,可大可小,但长度固定
该算法叫哈希算法(散列算法),这个固定长度值叫哈希值(散列值)

特点:
1.计算出来的值长度固定且该值唯一
2.该字符串是密文,且加密过程不可逆

用哈希计算得到一个字符串的用意?
例如:比对两个文件的内容是否一致?
例如:比对输入的密码和数据库存储的密码是否一致

字典的键和集合中的值都是唯一值,不可重复:
为了保证数据的唯一性,
用哈希算法加密字典的键得到一个字符串。
用哈希算法加密集合的值得到一个字符串。
如果重复,他们都是后面的替换前面的。自动去重

版本:
3.6版本之前都是 字典和集合都是无序的
3.6版本之后,把字典的字面顺序记录下来,当从内存拿数据的时候,
根据字面顺序重新排序,所以看起来像有序,但本质上无序

可哈希的数据 (不可变的数据):Number(int float bool complex) str tuple
不可哈希的数据 (可变的数据): list set dict

在同一文件中,变量的缓存机制(仅针对3.6 版本)

–>Number 部分

1.对于整型而言, -5~正无穷范围内的相同值 id一致

2.对于浮点数而言,非负数范围内的相同值 id一致
3.布尔值而言,值相同情况下,id一致
4.复数在 实数+虚数 这样的结构中永不相同(只有正虚数的情况例外)

–> 容器类型部分

5.字符串 和 空元组 相同的情况下,地址相同
6.列表,元组,字典,集合无论什么情况 id标识都不同 [空元组例外]

Number 类型的强制转换(int float complex bool)

可以转换的数据类型: int float bool 纯数字字符串

可以转换的数据类型: int float bool 纯数字字符串

可以转换的数据类型:int float bool 纯数字字符串 complex

可以转换的类型: 布尔可以强转一切数据类型

布尔型为假的十种情况:0 , 0.0 , False , 0j ” [] () set() {} None

初始化变量时,不清楚用什么值,无脑写上None
默认转换成当前数据类型的一个值 int() float() complex() bool()
额外的扩展

Number 自动类型转换(int float complex bool)

注意:低精度默认向高精度进行转换bool--> int --> float --> complex
'''小数的精度损耗 (小数后面一般有时截取15~18位,但是不完全,存在精度损耗)"""不要用小数作比较,咬不准"""print(0.1 + 0.2 == 0.3)print(5.1 + 5.9 == 11.0)0.0999999999999999'''

容器类型的强制转换(str list tuple set dict)

可以转换的类型: 所有的数据类型都可以转换, 在当前的数据类型两边套上引号

如果是字符串:把字符串中的每个元素单独拿出来,作为列表中的新元素

如果是字典:只保留字典中的键

如果是其他容器数据:就是单纯的在元数据类型的两年换上[ ] 括号

如果是字符串:把字符串中的每个元素单独拿出来,作为元组中的新元素

如果是字典: 只保留字典中的键

如果是其他容器数据:就是单纯的在原数据类型的两边换上( ) 括号

如果是字符串:把字符串中的每个元素单独拿出来,作为集合中的新元素

如果是字典 :只保留字典中的键

如果是其他容器数据:就是单纯的在元数据类型的两边换上{}括号

要求:必须是等长的二级容器,并且里面的元素个数是2个;外层是列表,元组,集合 , 里层是列表或者元组的等长二级容器 => 字典;

可以实现,不推荐使用,因为达不到想要的目的,集合无序,不推荐使用
字符串长度只能是2位,有极大的局限性,不推荐使用

讲列表转换成集合的数据类型,在转换回字典,因为集合有去重功能

四级容器

如何获取bingo?

等长的二级容器

外面是容器,里面的元素也是容器,且元素个数相同

使用方法一:isinstance(数据,类型)

该数据是这个类型,返回True 反之,返回False

类型:int float complex bool str list tuple set dict

使用方法二: isinstance (数据,(类型1,类型2,类型3…))

如果该数据在所对应的类型元组当做,返回True,反之,返回False

使用方法一:

使用方法二:

被除数 ÷ 除数 = 商

注意点:如果被除数或者除数是小数,那么得到正常结果之后,数值后面带上 .0变成小数

比较运算符的结果要么是True,要么是False 只有两个值

一真则真,一假则假

一真则真,全假则假

无论后面的表达式是True 还是False 都已经无法改变最后的结果,那么直接短路,后面的代码不执行;

(1) True or print(“程序执行了~ 1111”)

(2) False ande print(“程序执行了~2222”)

先脑补计算当前表达式的布尔值是True还是False,如果出现了True or 表达式 或者False and 表达式的情况,直接返回牵着,后面代码不执行,如果没有出现短路效果,直接返回后者

res = 5 and 6 # 6

”’

True and True => True

True and False => False

”’

接下来看一段代码

优先级从高到低:() > not > and > or

小练习:

#结果是这么来的:
"""
000 ... 10011
000 ... 01111
000 ... 00011 => 3
"""
结果是这么来的:
"""
000 ... 10011
000 ... 01111
000 ... 11111
"""

量遏制不相同 => True 反之返回False

结果是这么来的:
"""
000 ... 10011
000 ... 01111
000 ... 11100
"""

这个数乘以2的n次幂

结果是这么来的:"""
000 ... 101  => 5000 .. 1010  => 10000 ..10100  => 20000 .101000  => 40"""

这个数地板除2的n次幂

结果是这么来的:
"""000 ... 101000 ... 010 => 2000 ... 001 => 1000 ... 000 => 0"""

-(n+1)

练习1:

结果是这么来的:”””

原码:000 ... 10011反码:000 ... 10011补码:000 ... 10011补码:   000 ... 10011按位非: 111 ... 01100给你补码->原码补码:111 ... 01100反码:100 ... 10011原码:100 ... 10100 => -20"""练习2

结果是这么来的:

"""原码:100 ... 10011反码:111 ... 01100补码:111 ... 01101补码:   111 ... 01101按位非: 000 ... 10010给你补码->原码 (因为是整数 ,原反补相同)000 ... 10010 => 19"""

个别运算符:

运算符优县级最高的: **

运算符优先级最低的: =

()可以提升优先级

一元运算符 > 二元运算符(优先级)

一元运算符:同一时间,操作一个值 ~ –

二元运算符:同一时间,操作一个值 + – * / ……

同一种类运算符:

算数运算符:乘除 > 加减

逻辑运算符:() > not > and > or

位运算符: (<< >>) > & > ^ > |

整体排序:

算数运算符 > 位运算符 > 比较运算符 > 身份运算符 > 成员运算符 > 逻辑运算符、

赋值运算符用来做收尾

小练习

作用域:作用的范围

缩进:要么全都使用/t Tab 要么全都是使用4个空格 来表达相同的作用域,不能混在一起;

其他语言的写法(了解)

流程:代码执行的过程

控制:对代码执行过程中的把控

三大结构:

(1)顺序结构:默认代码从上到下,依次执行

(2)分支结构:单项分支 双向分支 多项分支 巢状分支

(3)循环结构:while / for

if 条件表达式:

code1

code2

当条件表达式成立,返回True,执行对应的代码块

if条件表达式:

code1 …

else:

code2…

如果条件表达式成立,返回True,执行if这个区间的代码块

如果条件表达式不成立,返回False,执行else这个区间的代码块

if 分支的代码快啊也叫做镇区间

else 分支的代码块也叫做假区间

input 等待用户输入字符串(注意:结果一定是字符串)

如果admin = Sam 密码:password = 111 显示登陆成,否者显示登陆失败

“””

if 条件表达式1:

code1

elif 条件表达式2:

code2

elif 条件表达式3:

code3

else:

code4

如果条件表达式1成立,执行对应的分支code1,反之判断条件表达式2是否成立

如果条件表达式2成立,执行对应的分支code2,反之判断条件表达式3是否成立

如果条件表达式3成立,执行对应的分支code3,如果不成立,直接走ekse分支,到此程序执行完毕

elif 可以是0个 或者 多个

else 可以是0个 或者 一个

“””

“””单项分支,双向分支,多项分支的互相嵌套组合”””

小练习

height

女生找对象

男生在1米~1.5米之间 小强 你在哪里?

男生在1.5~1.7米之间 没有安全感~
男生 1.7~ 1.8米之间 帅哥 留个电话
男生 1.8~2米之间 帅哥 你建议多一个女朋友吗

快捷键用法:
tab 向右缩进
shift + tab 向左缩进

特点:减少冗余代码,提升执行效率

语法:

while 条件表达式:

code1

(1)初始化一个变量

(2)写上循环的条件

(3)自增自减的值

死循环

“””

while True:

print(1)

“””

help 查看某个方法的文档

如果用上面的方法不仅代码量多 而且太蠢了 接下来我们用while 循环

方法一:

方法二:

方法三:

*公式: 任意数 和 n 进行取余,余数的范围: 0 ~ (n-1)***
0 % 2 = 0
1 % 2 = 1
2 % 2 = 0
3 % 2 = 1
被除数 % 2 => 0 或者 1

0 % 5 = 0
1 % 5 = 1
2 % 5 = 2
3 % 5 = 3
4 % 5 = 4
5 % 5 = 0
6 % 5 = 1
7 % 5 = 2
被除数 % 5 => 0 或者 1,2,3,4

intersection() 交集

简写 &

difference() 差集

简写 –

union() 并集

简写 |

symmetric_difference() 对称差集 (补集情况涵盖在其中)

简写 ^

issubset() 判断是否是子集

简写 <

issuperset 判断是否是父集

简写>

isdisjoint() 检测两集合是否不相交 不相交 True 相交False

frozenset 单纯的只能做交差并补操作,不能做添加或者删除的操作

不能再冰冻集合中添加或者删除元素

冰冻集合只能做交差并补

遍历冰冻集合

Original: https://www.cnblogs.com/shuaiyao666/p/15849674.html
Author: 小帅同学啊
Title: python基础

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/815044/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • pytest.ini最基础配置方法,一眼看懂

    前置条件:1.文件路径:– Test_App– – test_abc.py– – pytest.ini 2.pyetst…

    Python 2023年9月12日
    038
  • java 弹力球_pygame实现弹力球及其变速效果

    本文实例为大家分享了pygame实现弹力球及其变速效果的具体代码,供大家参考,具体内容如下 期望: 1.球体接触到框体后反弹 2.设置速度按键,按下后改变球体速度、颜色状态 具体实…

    Python 2023年9月24日
    040
  • yolov5目标检测神经网络——损失函数计算原理

    前面已经写了4篇关于yolov5的文章,链接如下: 1、基于libtorch的yolov5目标检测网络实现——COCO数据集json标签文件解析 2、基于libtorch的yolo…

    Python 2023年9月30日
    047
  • Sentinel控制台1.8.3修改源码,修改配置后推送到Nacos

    1. 接着上一篇 2. 思路 3. 下载Sentinel源码 4. 看Gateway里面读取的配置信息 5. 修改Sentinel控制台源码 6. 熔断规则测试 7. 限流规则测试…

    Python 2023年10月23日
    049
  • 4个常用的Python数据分析库详解!

    推荐文章 很多小伙伴都发现了,用户自主「申请上首页」的按钮取消了,那博主们写的文章还有上首页曝光的机会吗?我们的回答是”当然有!!!”虽然我们取消了上首页申…

    Python 2023年5月25日
    089
  • 【目标跟踪】卡尔曼滤波器(Kalman Filter) 含源码

    目录 系列文章 效果展示 卡尔曼滤波器的简单介绍 一、公式解释 二、卡尔曼增益的推导 三、第一个例子 四、第二个例子 系列文章 【目标跟踪】卡尔曼滤波器(Kalman Filter…

    Python 2023年9月29日
    064
  • python:DataFrame的创建以及DataFrame的属性

    一、DataFrame的创建 Pandas 的数据结构主要是:Series(一维数组),DataFrame(二维数组)。DataFrame是由索引和内容组成,索引既有行索引inde…

    Python 2023年8月6日
    036
  • 基本数据类型概述

    思考,是上面的苹果堆好处理(运输,存储,加工)还是下面有包装的苹果好处理。 什么是数据类型 数据类型简单的理解,其实就是为了方便处理(传输,存储,运算)数据,对数据做的包装,不同的…

    Python 2023年11月1日
    031
  • Python自学教程5-字符串有哪些常用操作

    任何编程语言,不管是Python、Java 还是 Golang, 字符串都是最重要的一种数据类型。 但是字符串的操作又很多,初学者经常毫无头绪,不知道从哪儿学起,也不知道哪些操作用…

    Python 2023年6月11日
    040
  • scrapy框架(3):CSS选择器解析数据

    CSS选择器提取数据 一、HTML涉及内容补充: 二、css选择器介绍 三、实操 * 1、前提 2、code实现的方法介绍 – ①、Pycharm debug ②、黑窗…

    Python 2023年10月2日
    048
  • 量化框架backtrader入门

    1. 简介 backtrader 是一个用于回测和交易的python框架,它功能丰富,可以让你聚焦在设计可重用的交易策略、指标和分析上,而不用花大量时间在构建基础框架上面。 优点:…

    Python 2023年9月4日
    050
  • [Django] Django基础环境配置 | 日记

    step1 : 设置python 虚拟环境并激活,然后安装Django开发版本这里可以本人参考博客 step2 : 新建项目之前安装Django以及虚拟环境都是在C盘下处理的,在这…

    Python 2023年8月5日
    058
  • 【Pandas 数据分析 5-1】Pandas高级操作

    在数据分析和数据建模的过程中需要对数据进行清洗和整理等工作,有时需要对数据增删字段。本章将介绍Pandas对数据的复杂查询、数据类型转换、数据排序、数据的修改、数据迭代以及函数的使…

    Python 2023年8月7日
    070
  • 使用Python+tkinter编写电脑桌面放大镜程序

    代码思路:首先全屏截图,然后在鼠标当前位置以小窗口进行二次截图,放大后再显示到鼠标左上角。 主要技术:全屏截图,指定区域截图,绑定鼠标事件,绘制图像。 建议大家照着代码敲一遍,然后…

    Python 2023年9月23日
    032
  • pandas 学习

    读取csv文件并选择行合并 知识点: os 读取文件夹和文件名 import pandas as pd import os Folder_Path = r’C:\Users。。。’…

    Python 2023年6月12日
    070
  • 安装pyinstaller,打包python文件,以及遇到的问题,闪退等

    安装pyinstaller,打包python文件 法一 1.打开Windows电脑的cmd(Windows+r)。 2.输入 pip3 install -i https://pyp…

    Python 2023年11月9日
    027
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球