python 基础

1.Python

1.1  环境搭建:官网下载python,编译器:pycharm或jupyter

1.2  变量

(1)语法:变量名=变量

(2)标识符命名规则:由数字、字母、下划线组成;不能以数字开头;不能使用内置关键字;严格区分大小写

(3)命名习惯:见名知意,驼峰命名(大驼峰小驼峰)

1.3  格式化输出

(1)输出函数:print()

(2)格式化函数:format();

语法:’{}’.format()

作用:用于格式化字符串,可以接受无限个参数,可指定顺序,最后输出的是一个字符串

%s:字符串

%d:十进制数

%f:十进制浮点数,小数点默认保留6位

1.4  输入函数:input()

语法:变量名 = input()控制台输入的为字符串类型;(变量名存储输入函数)

1.5  数据类型

python可自定义数据类型(理论上有无数种数据类型);

默认的有6种标准数据类型:

(1)数值类型

整数型int;常用的四种声明方式:变量名=数值(十进制);变量名=0b数值(二进制0和1);变量名=0o数值(八进制);变量名=0x数值(十六进制0-9A-F);

浮点数:float;变量名=小数;

复数型(不常用):complex;两种声明方式:变量名=实数+虚数i;变量名=complex(实数,虚数);

布尔值:bool(True和False)

(2)字符串类型String

1  字符串:string,文字类型,三种声明方式:变量名=’内容’;变量名=“内容”;变量名=‘‘‘内容’’’;

2  转义符:

\(续航符:拼接作用)

\\转译为一个单纯的\,或\’转译为一个单纯的’,或\”转移为一个单纯的”

\n换行符:

 \r回车符: 通常不单独使用,结合换行符一起使用

 \t水平制表符:占位,4个字符算一个位置

r:元字符串,在任意字符串前添加r或R,使字符串内任意的转译符号失效,直接显示

(3)列表list:可变的有序序列(增删改查),通常用于存储同类项目的集合,元素类型可不必相同,元素可重复,用[元素1,元素2...]声明

(4)元组tuple:不可变的有序序列(内部元素不可改变),通常用来保存程序中不可修改的部分,元素类型可不必相同,元素可重复,用(元素1,元素2...)声明

(5)集合set:无序序列,元素不可重复,常见的用途(成员检测,从序列中去重,数学中的集合计算例如交集并集差集等)

分为可变集合set和不可变集合frozenset,声明方式{元素1,元素2...}

(6)字典dict:可变的无序序列,是一种映射类型,以键值对形式存储(key唯一),用{key:value...}声明

1.6 缩进 :一个tab,或4个空格

1.7 注释:

(1)单行注释 #

2)多行注释 三个单引号 '''

1.8 运算符

(1)算术运算符 **幂运算,%取余数, //除法取整运算

(2)比较运算符 <、>、>=、==、<=、!=

(3)赋值运算符 =、+=、-=

(4)逻辑运算符    and/or/not

2.程序结构

1.顺序结构:从上往下依次执行,中间没有任何的判断和跳转

2.选择结构:根据条件判断的结果来选择执行不同的代码,可以是单分支、双分支以及多分枝

单分支:if:

双分支:if:    else:     else不能单独使用,与同层级向前匹配最近的if

多分支:if:    elif:    else:

三元表达式:简化条件判断语句,得到的是一个表达式   

语法:[条件成立的表达式] if 条件 else[条件不成立的表达式]

为了保证程序的清晰易读,复杂的程序逻辑不建议使用三元表达式

实战:

If else 判断

三元表达式

3.循环结构:根据条件来重复执行某段代码或者遍历序列中的元素,通过while和for语句实现循环

while 条件(布尔类型表达式):循环体

for 变量名 in 迭代对象:循环体    常用的迭代对象:列表、字典、元组、集合、字符串

负数可以从大到小

嵌套循环:99乘法表

3.数据类型的具体操作

查看数据类型-type()

数据转换

列表的基本操作

list1 = [] # 定义一个空列表
list2 = [1, 2.2, "hello", [1, 2, 3]]

# 访问列表
print(list2) # 查看整个列表
print(list2[2]) # 通过下表查看单个元素

# 增删改操作
# 1.直接添加到列表的最后一位append()
list2.append(2)
print(list2)


# 2.指定位置新增元素insert,下标从0开始
list2.insert(2,"s")
print(list2)


# 删除
# remove()删除某个元素,如果元素重复,默认删除第一个
list2.remove(1)
print(list2)


# 2.del 根据下标决定删除谁
del list2[5]
print(list2)


# 3. __delitem__()通过下标删除元素
list2.__delitem__(3)
print(list2)


# 修改对应元素,重新赋值的过程
list2[0] = 100
print(list2)

# 列表的运算符操作
# 1.+和*,+:实现列表的合并  *:实现列表元素的重复
# 2.比较运算符都可以使用,实现列表内部元素的比较,从第0个元素开始,按照数值的大小或ascii表的顺序实现比较
# 3.地址比较:is和is not 实现列表内存地址的比较
# 4.成员比较:in和not in 实现列表是否包含某个元素的判断
# 5.自运算符操作:+=,*=

# 列表的合并
list3 = [1,2,3]
list4 = [1,2,3,"a","b"]
print(list3+list4)
print(list4+list3)

# 列表元素的重复
print(list3*3)

print(list3<list4)
print(list3==list4)
print(list3 is list5)
print(1 in list3)
print("a" in list3)

# 列表的切片 对列表进行截取、反转等操作
'''
[a:b:c] a:从哪开始 b:到哪位置 c:步长    左闭右开
list[-1] 返回列表最后一个
list[:1] == list[0:1:1] 返回列表第01的元素
list[1:] 返回第二个到最后一个数据
list[-1:] 返回最后一个数据
list[:-1] 返回第一个到倒数第二个数据
list[::1] 返回原列表
list[::-1] 返回原列表的倒序
list[::2] 返回从左往右 步长为2进行切片
'''

list6 = [5,14,75,22,39]
print(list6[1:3])  #
从下标1开始到下标3结束,不包含下标3的元素
print(list6[2:])  # 从下标2开始,到末尾最后一个元素结束
print(list6[:2]) # 截取列表前两个元素,下标为01
print(list6[-2:]) #
截取末尾2个元素

#反转
print(list6[::-1])

[14, 75]

[75, 22, 39]

[5, 14]

[22, 39]

[39, 22, 75, 14, 5]

# 列表转换 tuple(),set(),list()
list8 = [5,14,75,22,39]
print(list8.count(5)) #
统计某个数值在列表中出现的次数
# list8.clear()
# max(),min(),sort()
list8.sort()
print(list8)


# 拷贝
# 1.浅拷贝 copy()  list2 = list1.copy()
# 2.深拷贝 import copy  list2 = copy.deepcopy(list)
# 浅拷贝只适用于一维数组
# 深拷贝完全的内存拷贝
list9 = list8.copy()
import copy
list10 = copy.deepcopy(list8)
print(list9)
print(list10)

元组

tuple1 = (11, 22, 33, 44, 55)
# 枚举+遍历
for index, value in enumerate(tuple1):
    print(index, value)
   
for index in zip(tuple1):
    print(index)

0 11

1 22

2 33

3 44

4 55

(11,)

(22,)

(33,)

(44,)

(55,)

字典

dict1 = {}
# dict1["name"] = "aa"
# dict1["age"] = 18
a = (("name", "aa"),("age", "18"))
b = (("name1", "aa"),("age1", "18"))
dict2 = dict(a)
# print(dict1)
dict2["father"] = "bb"
dict2.update(b)
print(dict2)


# 获取某个key的value
print(dict2["father"])
# dict2.get(key,
返回值)
print(dict2.get("father1",0)) #
如果key存在,返回value,否则返回0

{'name': 'aa', 'age': '18', 'father': 'bb', 'name1': 'aa', 'age1': '18'}

bb

0

# 返回所有键值对
print(dict2.keys())
print(dict2.values())

for i in dict2.values():
    print(i)

for j in dict2.keys():
    print(j)

aa

18

bb

aa

18

name

age

father

name1

age1

字典的删除

dict2.pop("father") # 删除对应键值对,返回相应的键

dict2.popitem() # 默认删除最后一组键值对

del dict2["name"]
del dict2

dict2.clear()

遍历字典

集合set

a = {1, 2, 3, 4, 5}
b = {5, 6, 7, 8}

# 差集 -
print(a-b)
print(b-a)
#
并集 | 去除重复值
print(a|b)
#
交集 &
print(a&b)
#
对称差集 ^ 两个集合中不同时存在的元素
print(a^b)

{1, 2, 3, 4}

{8, 6, 7}

{1, 2, 3, 4, 5, 6, 7, 8}

{5}

{1, 2, 3, 4, 6, 7, 8}

3.函数

def 函数名(参数):
    '''加注释'''
    函数体
    [return 函数的返回值]
   
调用方式:函数名(参数)

无参函数

有参函数:

位置参数(必须参数,就是必须要传入的参数,传入的参数也必须按照函数定义时的顺序,参数名=参数值)

默认参数(可以给参数赋予一个默认值,调用参数时如果参数有实际参数传入,则使用实际参数,如果没有实际参数传入就默认使用默认参数。如果同时存在默认参数和位置参数,则未知参数放前面,参数默认值必须是不可变类型,不要使用可变类型)、

命名关键字参数(用*号分隔命名关键字参数,*号后面的参数必须以 参数名=参数值的形式传入,如果有未知参数和默认参数,则命名关键字要求在位置参数之后,默认参数之前)

可变参数(参数前面加*,可变参数可以理解为将收集到的所有未知参数打包成元组,调用函数的时候可以传入多个元素,看成是元组的拆包)

关键字可变参数(**kwargs,他可以理解为将收集到的所有命名关键字参数打包成字典,调用函数的时候,看成字典的拆包)

返回值return

在需要返回的地方使用return关键字返回任意类型的数值和表达式,终止函数的执行。

一个函数中可以存在多个return语句,表示在不同条件下终止函数并返回对应的数值。

Return在函数中不是必须的,没有return表示函数没有返回值。

匿名函数lambda-lambda表达式

如果函数定比价简单,并且只有参数比较简单时可以使用lambda表达式去表达函数。lambda参数:返回值表达式

Lambda关键字必须存在,lambda后面跟的就是参数,如果多个参数就用逗号隔开

4.模块和包

模块:就是一个以.py结尾的文件,模块中可以定义函数、类和变量,甚至是可执行代码

Python模块分为2种:内置模块和第三方模块

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/67638.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ORACLE和MYSQL区别

1&#xff0c;Oracle没有offet,limit&#xff0c;在mysql中我们用它们来控制显示的行数&#xff0c;最多的是分页了。oracle要分页的话&#xff0c;要换成rownum。 2&#xff0c;oracle建表时&#xff0c;没有auto_increment&#xff0c;所有要想让表的一个字段自增&#xff0c…

Dockerfile 简单实战

将flask项目打包成镜像 1. 准备flask文件 创建 app.py 文件&#xff0c;内容如下 from flask import Flask app Flask(__name__)app.route(/) def hello_world():return Hello Worldif __name__ __main__:app.run(host0.0.0.0, port8000, debugTrue) 并开启外网访问&#xf…

【2.1】Java微服务: Nacos的使用

目录 Nacos介绍 Nacos安装 下载和安装 修改端口 启动 服务注册与发现 导入Nacos管理依赖 导入服务依赖 配置Nacos的服务地址 启动服务&#xff0c;查看已注册的服务 服务分级存储模型 分级存储模型介绍 具体结构 配置实例集群 同集群优先的负载均衡策略 服务权重配置…

电力系统电流三段式保护MATLAB仿真模型

整体模型如下&#xff1a; Matlab/Simulink搭建的电力系统电流保护模型采用辐射型单电源供电的运行方式 Ⅰ段保护的搭建 Ⅰ段保护为瞬时速断保护&#xff0c;根据Ⅰ段整定原则确定整定值。线路发生短路故障时&#xff0c;短路电流急剧增大&#xff1b;超过设置的整定值时&…

06微服务间的通信方式

一句话导读 微服务设计的一个挑战就是服务间的通信问题&#xff0c;服务间通信理论上可以归结为进程间通信&#xff0c;进程可以是同一个机器上的&#xff0c;也可以是不同机器的。服务可以使用同步请求响应机制通信&#xff0c;也可以使用异步的基于消息中间件间的通信机制。同…

栈和队列OJ题讲解

&#x1f493;博主个人主页:不是笨小孩&#x1f440; ⏩专栏分类:数据结构与算法&#x1f440; 刷题专栏&#x1f440; C语言&#x1f440; &#x1f69a;代码仓库:笨小孩的代码库&#x1f440; ⏩社区&#xff1a;不是笨小孩&#x1f440; &#x1f339;欢迎大家三连关注&…

vue3多条件搜索功能

搜索功能在后台管理页面中非常常见&#xff0c;本篇就着重讲一下vue3-admin-element框架中如何实现一个顶部多条件搜索功能 一、首先需要在vue页面的<template></template>中写入对应的结构 <!-- 搜索 --><div style"display: flex; justify-content…

【大数据】Flink 从入门到实践(一):初步介绍

Flink 从入门到实践&#xff08;一&#xff09;&#xff1a;初步介绍 Apache Flink 是一个框架和分布式处理引擎&#xff0c;用于在 无边界 和 有边界 数据流上进行 有状态 的计算。Flink 能在所有常见集群环境中运行&#xff0c;并能以内存速度和任意规模进行计算。 1.架构 1…

[mongo]应用场景及选型

应用场景及选型 MongoDB 数据库定位 OLTP 数据库横向扩展能力&#xff0c;数据量或并发量增加时候架构可以自动扩展灵活模型&#xff0c;适合迭代开发&#xff0c;数据模型多变场景JSON 数据结构&#xff0c;适合微服务/REST API基于功能选择 MongoDB 关系型数据库迁移 从基…

测试人员该怎样写软件缺陷报告?

软件测试过程中&#xff0c;每个公司都制订了软件的缺陷处理流程&#xff0c;每个公司的软件缺陷处理流程不尽相同&#xff0c;但是它们遵循的最基本流程是一样的&#xff0c;都要经过提交、分配、确认、处理、复测、关闭等环节&#xff0c;如图1所示。 缺陷处理流程 关于图1所…

Windows环境下通过 系统定时 执行脚本方式 压缩并备份文件夹 到其他数据盘

环境配置 压缩时需要使用7-zip进行调用&#xff0c;因此根据自己电脑进行安装 官网&#xff1a;https://www.7-zip.org/ 脚本文件 新建记事本文件&#xff0c;重命名为git_back_up.bat echo off rem 设置utf-8可以正常显示中文 chcp 65001 > nulrem 获取当前日期和时间&…

系统架构设计师-系统可靠性分析与设计

目录 一、可靠性相关基本概念 二、可靠性指标 1、串联系统与并联系统可靠性指标计算 2、混合系统 三、可靠性设计 1、影响软件可靠性的主要因素&#xff1a; 2、增加可靠性的解决方案 2.1 避错技术 2.2 降低复杂度设计 2.3 检错技术 2.4 容错技术 3、双机容错 一、可靠性相关…

【算法|数组】滑动窗口

算法|数组——滑动窗口 引入 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度**。**如果不存在符合条件的子数组&#xff0c;返回 0 。 示例…

Vue [Day5]

自定义指令 全局注册 和 局部注册 inserted在指令所在的元素 被插入到页面中时&#xff0c;触发 main.js import Vue from vue import App from ./App.vueVue.config.productionTip false// 1.全局注册指令 Vue.directive(focus, {// inserted在指令所在的元素 被插入到页…

机器学习中训练数据的重要性

人工智能技术发展至今&#xff0c;训练数据的重要性已经是我们老生常谈的问题。在重声训练数据为什么重要之前&#xff0c;我们先重新回顾下AI技术大爆炸的三大初始概念&#xff1a;机器学习是什么&#xff1f;人工智能是什么&#xff1f;训练数据又是什么&#xff1f; 机器学…

阿里云内容审核服务使用(图片审核)

说明&#xff1a;在项目中&#xff0c;我们经常会对用户上传的内容&#xff08;如文字、图片&#xff09;等资源内容进行审核&#xff0c;审核包括两方面&#xff0c;一方面是内容与描述不符&#xff0c;一方面是违反法律法规。本文介绍使用阿里提供的内容审核服务&#xff0c;…

4、Rocketmq之存储原理

CommitLog ~ MappedFileQueue ~ MappedFile集合 正常情况下&#xff0c;RocketMQ支持消息体字节数最多为1个G。注意该消息体并不单单是消息体body。如果生产的消息其字节数超过1个G则该消息是无法被落盘处理的。因为没有一个MapperFile文件可以承载该消息所有的字节数。 1.All…

智慧工地源码 智慧工地云平台源码 智慧工地APP源码

智慧工地的核心是数字化&#xff0c;它通过传感器、监控设备、智能终端等技术手段&#xff0c;实现对工地各个环节的实时数据采集和传输&#xff0c;如环境温度、湿度、噪音等数据信息&#xff0c;将数据汇集到云端进行处理和分析&#xff0c;生成各种报表、图表和预警信息&…

windows10开启远程连接

目录 开启远程连接远程连接 开启远程连接 右击电脑图标->属性 点击 远程设置 远程连接 找到 远程桌面连接 点击 远程桌面连接 输入远程ip 10.0.8.5 然后点击连接 4.输入默认用户名new的密码&#xff0c;然后确定&#xff0c;搞定。

网络加速与文件传输软件:如何通过优化网络提升文件传输速度

在信息化社会&#xff0c;文件传输是人们生活和工作中必不可少的一个环节。但是&#xff0c;由于网络环境的多样性和传输过程中可能出现的各种问题&#xff0c;文件传输速度经常受到影响。因此&#xff0c;如何优化网络以提高文件传输速度成为了一个重要的课题。本文将探讨网络…