Python入门(小白友好)
知识图谱
搭建环境
安装Python:Download Python | Python.org
安装PyCharm:Download PyCharm: The Python IDE for data science and web development by JetBrains
注意:专业版本是收费的,新手小白使用社区版(community)即可
创建第一个项目:
一些PyCharm的设置(也适用于其他JetBrains的产品,例如:IDEA,Clion)
设置背景 (可以让你敲代码的时候心情更好哈哈哈哈)
设置字体大小
同样也是在设置里面:找到编辑器—字体,就可以设置字体大小了
第一个Python程序
print("hello")
右击鼠标,再点击运行即可;或者是 快捷键Ctrl+Shift+F10
变量和类型
首先Python是一种动态类型语言,动态类型语言就是在运行时才会去检查数据类型的语言,相对的静态类型语言是在编译时就会去检查数据类型,例如:C++/Java就是静态类型语言
简单来说就是:动态类型语言的变量会随着赋值对象类型的改变而发生改变
整数类型
int
a = 10
print(type(a))
输出为<class 'int'>
PS: 和C++/Java语言不同,在Python中的int类型数据范围是无穷的,理论上只要内存足够大就可以存储无限大的数字
浮点数类型
float
a = 3.14
print(type(a))
输出为<class 'float'>
在Python中是没有double类型的,但是Python中的float其实就相对于C++/Java中的double
布尔类型
bool
a = True
print(type(a))
输出为<class 'bool'>
布尔类型只有两种取值: True
和False
字符串类型
str
a = 'hello'
print(type(a))
输出为<class 'str'>
在Python中,由于没有字符类型,因此表示字符串时,使用单引号或双引号都是可以的
Python是动态类型语言
a=10
print(type(a))a=3.14
print(type(a))a=True
print(type(a))a = 'hello'
print(type(a))
输出结果为:
<class 'int'>
<class 'float'>
<class 'bool'>
<class 'str'>
a的类型随着赋值对象的不同而发生改变
注释
单行注释
# 这是一行注释
多行注释(文档注释)
'''
这是一行注释
这是又一行注释
'''
输入输出
输入
关键字:input
a = input("请输入一个数字")
注意:input
函数返回的数据类型是str,如果要得到数字,需要进行数据转换
a = input("请输入一个数字")
print(type(a))
a=int(a)
print(type(a))
输出为:
请输入一个数字1
<class 'str'>
<class 'int'>
输出
关键字:print
a = 10
b = True
c = "hello"
d = 3.14
print(a)
print(b)
print(c)
print(d)
输出:
10
True
hello
3.14
f-string格式化输出 (类似于C语言中的printf)
a = 10
print(f"a={a}")
运算符
算术运算符
+ - * / %
不做赘述,与平常生活中的运算方式无异
**
乘方运算,同时也可以开方
print(2 ** 2)
print(9 ** 0.5)
输出为:
4
3.0
//
取整除法(地板除法)
在Python中的除法 / 结果是小数,而大多数语言的除法结果仍然是一个整数
print(5 / 2)
print(5 // 2)
输出为:
2.5
2
关系运算符
==
判断相等
<=
小于等于
>=
大于等于
注意:对浮点数判断是否相等的时候不能够使用==
因为小数在计算机中总是不能够精确的存储
例如:
print(0.1 + 0.2 == 0.3)
输出为:
False
对于小数判断是否相等,应该使用以下代码
print(-0.000001 < (0.1 + 0.2) - 0.3 < 0.000001)
输出为:
True
逻辑运算符
and
or
not
分别对应C++中的&&
||
!
条件判断
在Python中只有一种条件判断:
if 条件:执行代码
elif:执行代码
else:执行代码
与C++/Java不同:Python没有用{}来表示代码块,而是采用缩进的方式
不当的缩进会导致代码bug
例题:判断一个数是不是偶数
a = 10
if a % 2 == 0:print("偶数")
else:print("奇数")
空语句:pass
在Python语法中,每一个条件判断都需要对应一个缩进,也就是执行代码块,当什么都不需要执行的时候,需要加上pass
循环语句
while 条件成立:执行代码
例题:计算1-100的和
i = 0
sum = 0
while i <= 100:sum += ii += 1
print(sum)
注意:i 作为循环变量需要自增,否则死循环; 同时Python并不支持++/–的操作,自增只能使用 i+=1
for 变量 in 可迭代对象执行代码
例题:计算1-100的和
sum = 0
for i in range(1, 101):sum += i
print(sum)
其中range所表示的是一个左闭右开的数据范围; 默认步长为 1
break
跳出循环
continue
跳过本次循环
函数
def 函数名(参数列表):执行代码
例题:计算从0-n的和
def getSum(n):sum = 0for i in range(0, n + 1):sum += ireturn sumprint(getSum(100))
输出为:
5050
参数默认值
类似于C++中的缺省参数
def getSum(a, b, c=10):return a + b + cprint(getSum(1, 2, 3))
print(getSum(1, 2))
其中对于第三个参数可以传也可以不传,其默认值为10
默认参数的使用规则:
- 默认参数可以有多个
- 默认参数必须在参数列表的最后面
关键字参数
def getSum(a, b):return a + bprint(getSum(b=1, a=10))
通过指定形参来传参,可以调换参数的顺序
函数返回多值
def getPoint():x = 10y = 20return x, y
可以返回多个值,这是C++/Java所没有的功能
其底层是将这些返回值放到一个元组中,返回类型为元组
如果我们只需要接收其中部分的返回值,可以使用_
进行忽略
def getPoint():x = 10y = 20return x, y_, b = getPoint()
三大常用的集合类
列表
创建
a = []
b = list()
以上两种方式都是创建一个空列表
a = [1, 2, 3, 4, 5]
b = [0.125, "hello", True, 0]
创建列表并且初始化
值得注意的是:
Python中的列表和元组类似于C++/Java 中的数组概念,但是和数组最大的区别在于—列表和元组的元素可以是不同类型的
增加元素
a.append(90)
使用append方法在列表末尾追加元素
a.insert(3,"sun")
使用insert方法在指定下标处添加指定内容,前一个参数是下标,后一个是添加内容
删除元素
a.pop()
使用pop方法删除列表末尾元素
a.pop(3)
使用pop(index) 删除指定下标的元素,上面是删除列表a中下标为3的元素
a.remove(4)
使用remove(elem)方法删除指定内容的元素,上面是删除列表a中值为4的元素
查找元素
in
not in
a = [1, 2, 3, 4, 5]
print(1 in a)
print(0 in a)
print(1 not in a)
print(0 not in a)
返回值为布尔类型
输出为:
True
False
False
True
index
查找下标
-
存在—返回元素下标
-
不存在—抛出异常,不会返回-1;因为-1在Python中是一个合法的下标,表示倒数第一个元素
查找元素4(存在)
a = [1, 2, 3, 4, 5]
print(a.index(4))
查找元素0(不存在)
修改元素
a = [1, 2, 3, 4, 5]
a[0] = 100
a[3] = 300
直接使用下标访问即可,但是注意下标不能越界!!
遍历列表
a = [1, 2, 3, 4, 5]# 第一种方式
for elem in a:print(elem)
# 第二种方式 通过下标访问
i = 0
for i in range(0, len(a)):print(a[i])
# 第三种 while下标访问
i = 0
while i < len(a):print(a[i])i += 1
切片操作✨
切片操作是在Python中比较重要的操作
它可以较快的获取到指定的元素
[起始位置:结束位置:步长]
- 默认起始位置为0
- 默认结束位置为len(列表)-1
- 默认步长为1
a = [1, 2, 3, 4, 5]
截取2~4
print(a[1:4:])
截取下标为偶数的元素
print(a[0::2])
倒叙输出
print(a[::-1])
拼接列表
a = [1, 2, 3, 4, 5]
b = ["hello", True, 100]
将a b进行拼接
# 方式1
a += b# 方式2
a.extend(b)
元组
创建
a = ()
b = tuple()
以上都是创建一个空元组
a = (1, 3.14, False, "hello")
创建元组并且初始化
元组vs列表
二者很相似,基本的操作可以参照上面的列表
但是列表是可变的,而元组是不可变的
也就是说:元组不能够进行修改删除这样的操作,只能够对元组进行读操作
元组的优势
- 可哈希:因为元组是不可变的,所以是可哈希的;在Python中经典的不可哈希的对象—列表以及字典
- 安全:由于元组是不可变的,所以不需要担心数据在处理过程中发生改变
字典
字典是一种存储"键值对"的集合类
key必须是Python中可哈希的对象类型,例如:列表和字典就不可以作为key
value的类型随意
创建
a = {}
b = dict()
以上都是创建两个空字典
a = {'id': 10,'name': 'Mike','sex': 'man'
}
创建字典并且初始化
增加元素/修改元素
a['score'] = 100
a['id'] = 12
字典变量名[key]=value
- 如果key存在字典中,则为修改key对应的value
- 如果key不存在,则为增加元素
删除元素
a.pop('id')
字典变量名.pop(key)
pop方法删除key所对应的键值对
查找元素
print('id' in a)
print(a['id'])
使用in/not in进行查找,亦或者通过下标访问,如果不存在将抛出异常
遍历字典
for elem in a:print(elem, a[elem])
其中elem对应a中的key, a[elem]则是通过下标访问的形式得到的value
字典的常用方法
a.keys() # 获取到所有的key
a.values() #获取到所有的value
a.items() # 获取到所有的键值对(包括key和value)
如果我的文章对你有帮助的话,欢迎点赞收藏哦😘😘
同时如果文章中有错误的话,也欢迎各位大佬指出😁
相关文章:
Python入门(小白友好)
知识图谱 搭建环境 安装Python:Download Python | Python.org 安装PyCharm:Download PyCharm: The Python IDE for data science and web development by JetBrains 注意:专业版本是收费的,新手小白使用社区版(community)即可 创建第一个项目: 一些PyCharm的设置(也适用…...
【数据结构与算法】:非递归实现快速排序、归并排序
🔥个人主页: Quitecoder 🔥专栏:数据结构与算法 上篇文章我们详细讲解了递归版本的快速排序,本篇我们来探究非递归实现快速排序和归并排序 目录 1.非递归实现快速排序1.1 提取单趟排序1.2 用栈实现的具体思路1.3 代码…...
2024-3-18-C++day6作业
1>思维导图 2>试编程 要求: 封装一个动物的基类,类中有私有成员:姓名,颜色,指针成员年纪 再封装一个狗这样类,共有继承于动物类,自己拓展的私有成员有:指针成员:腿的个数&a…...
【OceanBase诊断调优】—— 敏捷诊断工具obdiag一键分析OB集群日志设计与实践
最近总结一些诊断OCeanBase的一些经验,出一个【OceanBase诊断调优】专题,也欢迎大家贡献自己的诊断OceanBase的方法。 1. 前言 obdiag定位为OceanBase敏捷诊断工具。1.2版本的obdiag支持诊断信息的一键收集,光有收集信息的能力,…...
python 调用redis创建查询key
部署redis apiVersion: apps/v1 # 描述api版本,默认都用这个 kind: Deployment # 资源类型,可以配置为pod,deployment,service,statefulset等等 metadata: # deployment相关的元数据,用于描述deployment的…...
归并排序思路
归并排序是一种经典的分治算法,其基本思路可以简述为以下几步: 分解:将待排序的数组递归地分解成较小的子数组,直到每个子数组只包含一个元素为止。这里采用分治的思想,将问题不断地划分为规模更小的子问题。 合并&am…...
【蓝桥杯选拔赛真题65】python输出三个字符 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析
目录 python输出3个字符 一、题目要求 1、编程实现 2、输入输出...
K8S日志收集方案-EFK部署
EFK架构工作流程 部署说明 ECK (Elastic Cloud on Kubernetes):2.7 Kubernetes:1.23.0 文件准备 crds.yaml 下载地址:https://download.elastic.co/downloads/eck/2.7.0/crds.yaml operator.yaml 下载地址:https://download.e…...
js基础语法大全(时间戳,uuid,字符串转json)
目录 一、获取时间戳二、获取uuid三、字符串转json格式 一、获取时间戳 var times Math.round(new Date().getTime()/1000).toString(); //获取 10位 时间戳 console.log(times);二、获取uuid function guid() {return xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx.replace(/[xy]…...
uView LoadingIcon 加载动画
此组件为一个小动画,目前用在uView的loadMore加载更多等组件的正在加载状态场景。 #平台差异说明 App(vue)App(nvue)H5小程序√√√√ #基本使用 通过mode设定动画的类型,circle为圆圈的形状࿰…...
Elasticsearch使用Kibana进行基础操作
一、Restful接口 Elasticsearch通过RESTful接口提供与其进行交互的方式。在ES中,提供了功能丰富的RESTful API的操作,包括CRUD、创建索引、删除索引等操作。你可以用你最喜爱的 web 客户端访问 Elasticsearch 。事实上,你甚至可以使用 curl …...
“SRP模型+”多技术融合在生态环境脆弱性评价模型构建、时空格局演变分析与RSEI 指数的生态质量评价及拓展应用教程
原文链接:“SRP模型”多技术融合在生态环境脆弱性评价模型构建、时空格局演变分析与RSEI 指数的生态质量评价及拓展应用教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247597452&idx5&snf723d9e5858a269d00e15dbe2c7d3dc0&chksmfa823c6…...
【Windows 常用工具系列 15 -- VMWARE ubuntu 安装教程】
文章目录 安装教程镜像下载 工具安装 安装教程 安装教程参考链接:https://blog.csdn.net/Python_0011/article/details/131619864 https://linux.cn/article-15472-1.html 激活码 VMware 激活码连接:https://www.haozhuangji.com/xtjc/180037874.html…...
SpringSecurity(SpringBoot2.X版本实现)
资料来源于 SpringSecurity框架教程-Spring SecurityJWT实现项目级前端分离认证授权 侵权删 目录 介绍 快速开始 认证 认证流程 登录校验流程 SpringSecurity完整流程 认证流程详解 代码实现 准备工作 mysql mybatis-plus redis 统一返回类 核心代码 密码加密存…...
仿牛客项目Day8:社区核心功能2
显示评论 数据库 entity_type代表评论的目标类型,评论帖子和评论评论 entity_id代表评论的目标id,具体是哪个帖子/评论 targer_id代表评论指向哪个人 entity public class Comment {private int id;private int userId;private int entityType;priv…...
Vmware虚拟机配置虚拟网卡
背景 今天同事咨询了我一个关于虚拟机的问题,关于内网用Vmware安装的虚拟机,无法通过本机访问虚拟上的Jenkins的服务。 验证多次后发现有如下几方面问题。 Jenkins程序包和JDK版本不兼容(JDK1.8对应Jenkins不要超过2.3.57)虚…...
双向链表代码(带哨兵位循环/不带哨兵位不循环
以下代码全为本人所写,如有错误,很正常,还请指出, 目录 带哨兵位循环 test.c DLList.c DLList.h 不带哨兵位不循环 test.c DLList.c DLList.h 带哨兵位循环 test.c #define _CRT_SECURE_NO_WARNINGS#include"DLlist.h&…...
C语言自学笔记13----C语言指针与函数
C 语言指针与函数 在C语言编程中,也可以将地址作为参数传递给函数。 要在函数定义中接受这些地址,我们可以使用指针。这是因为指针用于存储地址。让我们举个实例: 示例:通过引用致电 #include <stdio.h> void swap(int n1, …...
每日五道java面试题之mybatis篇(一)
目录: 第一题. MyBatis是什么?第二题. ORM是什么?第三题. 为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?第四题. 传统JDBC开发存在的问题第五题. JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的…...
一文解读ISO26262安全标准:概念阶段
一文解读ISO26262安全标准:概念阶段 1 相关项定义2 安全生命周期启动3 危害分析和风险评估 HaRa4 功能安全概念 由上一篇文章知道,安全生命周期包含概念阶段、产品开发阶段、生产发布后续阶段。本文详细解读概念阶段要进行的安全活动。 本部分规定了车辆…...
微信小程序调用百度智能云API(菜品识别)
一、注册后生成应用列表创建应用 二、找到当前所需使用的api菜品识别文档 三、点链接看实例代码 这里需要使用到如下几个参数(如下),其他的参数可以不管 client_id : 就是创建应用后的API Keyclient_secret: 就是创建…...
idea项目mapper.xml中的SQL语句黄色下划线去除
问题描述 当我们使用idea开发java项目时,经常会与数据库打交道,一般在使用mybatis的时候需要写一大堆的mapper.xml以及SQL语句,每当写完SQL语句的时候总是有黄色下划线,看着很不舒服。 解决方案: 修改idea的配置 Edi…...
es 聚合操作(二)
书接上文,示例数据在上一篇,这里就不展示了 一、Pipeline Aggregation 支持对聚合分析的结果,再次进行聚合分析。 Pipeline 的分析结果会输出到原结果中,根据位置的不同,分为两类: Sibling - 结果和现有…...
【vue.js】文档解读【day 5】| ref模板引用
如果阅读有疑问的话,欢迎评论或私信!! 本人会很热心的阐述自己的想法!谢谢!!! 文章目录 模板引用前言访问模板引用模板引用与v-if、v-show的结合v-for中的模板引用函数模板引用 模板引用 前言 …...
算法简单小技巧
主页:xiaocr_blog 1.最小公倍数和最大公约数 #include<iostream> using namespace std; int main(){int a,b;cin>>a>>b;int r a%b;while (r!0){a b;b r;r a%b;}cout<<b<<endl;return 0 ; } #include<iostream> using nam…...
前端入职配置新电脑!!!
前端岗位入职第一天到底应该做些什么呢?又该怎样高效的认识、融入团队?并快速进入工作状态呢?这篇文章就来分享一下,希望对即将走向或初入前端职场的你,能够有所帮助。内含大量链接,欢迎点赞收藏࿰…...
Java面试题总结15之简述你对RPC,RMI的理解
RPC:在本地调用远程的函数,远程过程调用,可以跨语言实现,httpClient RMI:远程方法调用,Java中用于实现RPC的一种机制,RPC的Java版本是J2EE的网络调用机制,跨JVM调用对象的方法&…...
内网穿透利器 n2n 搭建指南
1. n2n 简介 上文实验分析了 FRP 和 Zerotier 的利弊,本文再介绍另一种内网穿透方案,n2n。 n2n 是 C/S 架构的内网穿透服务,不同于 FRP 的 反向代理,它的原理是类似 Zerotier 的先打孔,打孔失败再尝试转发。关于打孔本…...
phpcms头像上传漏洞引发的故事
目录 关键代码 第一次防御 第一次绕过 第二次防御 第二次绕过 第三次防御 第三次绕过 如何构造一个出错的压缩包 第四次防御 第四次绕过 本篇文章是参考某位大佬与开发人员对于文件包含漏洞的较量记录下的故事,因为要学习文件包含漏洞,就将大佬…...
二叉树|二叉树理论基础、二叉树的递归遍历
代码随想录 (programmercarl.com) 树和二叉树 1.树的基本概念 1.1树的定义 1.2树的逻辑表示方法 1.3树的基本术语 1.4树的性质 1.5树的基本运算 1.6树的存储结构 2.二叉树的概念和性质 2.1二叉树的定义 2.2二叉树的性质 2.3二叉树与树、森林之间的转换 3.二叉树的…...
网站功能有哪些/网络营销的模式有哪些?
上次做了个项目,涉及到数据库的还原和恢复,到网上找了一下,是利用SQLDMO实现的,只要添加SQLDMO引用就好了,然后利用下边的类的方法就可以实现了。 我把原作者的类扩充了一下,可以自动识别web.config里 的数…...
移动app设计网站建设/云南网络推广公司排名
二十三、css中的定位1、绝对定位(经常用):absolute:定位离开之后,释放之前的位置,基于外层父级标签2、相对定位(最常用):relative:定位离开之后,之前的位置不会释放&…...
网页展示模板/重庆seo优化公司
题目描述 给定整数m以及n各数字A1,A2,…An,将数列A中所有元素两两异或,共能得到n(n-1)/2个结果,请求出这些结果中大于m的有多少个。 输入描述: 第一行包含两个整数n,m. 第二行给出n个整数A1,A2,…,An。 对于…...
大型门户网站建设报价表/网络营销和传统营销的区别
前言 Spring 5 于 2017 年 9 月发布了通用版本 (GA),它标志着自 2013 年 12 月以来第一个主要 Spring Framework 版本。它提供了一些人们期待已久的改进,还采用了一种全新的编程范例,以反应式宣言中陈述的反应式原则为基础。几天前小编从朋友…...
国内银行网站做的很垃圾/chatgpt 网站
一家在东京证券交易所上市的日本公司正在提供由三种加密货币担保的贷款:BTC、BCH和ETH。客户可以以不同的利率借款3亿日元(约270万美元)。该公司还为其加密业务在海外设立了子公司。 BTC、BCH、ETH担保的贷款 东京证券交易所(Tokyo Stock Exchange)上市的一家日本公司已经开始接…...
做系统网站/宁波seo企业推广
Linux简介:Linux -百度百科centos简介:centos-百度百科在学习Linux之前,首先要对计算机有一个基本的了解,在这方面,博主推荐一本贼好贼好的书-《穿越计算机的迷雾》,这本书“《穿越计算机的迷雾》从最基本的…...