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'>

布尔类型只有两种取值: TrueFalse

字符串类型

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

默认参数的使用规则:

  1. 默认参数可以有多个
  2. 默认参数必须在参数列表的最后面

关键字参数

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列表

二者很相似,基本的操作可以参照上面的列表

但是列表是可变的,而元组是不可变的

也就是说:元组不能够进行修改删除这样的操作,只能够对元组进行读操作

元组的优势

  1. 可哈希:因为元组是不可变的,所以是可哈希的;在Python中经典的不可哈希的对象—列表以及字典
  2. 安全:由于元组是不可变的,所以不需要担心数据在处理过程中发生改变

字典

字典是一种存储"键值对"的集合类

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)

在这里插入图片描述
如果我的文章对你有帮助的话,欢迎点赞收藏哦😘😘
同时如果文章中有错误的话,也欢迎各位大佬指出😁

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言---指针的两个运算符:点和箭头

目录 点&#xff08;.&#xff09;运算符箭头&#xff08;->&#xff09;运算符需要注意实际例子 C语言中的指针是一种特殊的变量&#xff0c;它存储了一个内存地址。点&#xff08;.&#xff09;和箭头&#xff08;->&#xff09;是用于访问结构体和联合体成员的运算符。…

IPSEC VPN-详解原理

目录 IPSEC提供的安全服务 IPSEC协议簇 ​编辑 安全协议 1.传输模式 2. 隧道模式 AH ---鉴别头协议 AH提供的安全服务&#xff1a; AH头部 AH的保护范围 1.传输模式 2.隧道模式 ​编辑 ESP ---封装安全载荷协议 ESP提供的安全服务&#xff1a; ESP的头部 ESP的保护范围 1.传输…

3月19日做题

[NPUCTF2020]验证&#x1f40e; if (first && second && first.length second.length && first!second && md5(firstkeys[0]) md5(secondkeys[0]))用数组绕过first1&second[1] 这里正则规律过滤位(Math.) (?:Math(?:\.\w)?) : 匹配 …

②免费AI软件开发工具测评:通义灵码 VS 码上飞

前言 我又双叒叕来测评了&#xff01;上次给大家带来的是iFlyCode和CodeFlying两款产品的测评&#xff0c;受到了大家的一致好评~ 今天咱就继续来聊聊&#xff0c;这次我们选的的对象是通义灵码和码上飞&#xff0c;从名字上也能看到出来这两款产品一定是跟软件开发有关系的&…

Intewl手机电商项目模板:前端Vue开发的强大助手与无限可能

Intewl手机电商项目模板&#xff1a;前端Vue开发的强大助手与无限可能 在快速发展的移动互联网时代&#xff0c;手机电商项目已经成为商业竞争的新战场。而在这个战场中&#xff0c;如何快速、高效地开发出功能齐全、用户体验优秀的手机电商应用&#xff0c;成为了每一个开发者…

Java安全 反序列化(1) URLDNS链原理分析

Java安全 反序列化(1) URLDNS链原理分析 文章目录 Java安全 反序列化(1) URLDNS链原理分析前置知识应用分析payload1.新建HashMap类2.新建URL类3.获取URL 的 Class对象4.通过反射访问URL内部变量5.通过反射为URL中类赋值6.调用HashMap#put方法传入key和value7.再次通过反射为UR…

【LeetCode热题100】138. 随机链表的复制(链表)

一.题目要求 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点的值都设为其对应的原节点的值…

使用C#的winform控制数据库实例服务的运行状态

一、得到sqlserver的实例名 二、引用对应的程序集和命名空间 using System.ServiceProcess; C#操作服务要用的类 ServiceController 声明类 private ServiceController serviceController new ServiceController("MSSQLSERVER"); 三、判断服务状态 serviceCon…

阿里云2核4G4M轻量应用服务器价格165元一年

阿里云优惠活动&#xff0c;2核4G4M轻量应用服务器价格165元一年&#xff0c;4Mbps带宽下载速度峰值可达512KB/秒&#xff0c;系统盘是60GB高效云盘&#xff0c;不限制月流量&#xff0c;2核2G3M带宽轻量服务器一年87元12个月&#xff0c;在阿里云CLUB中心查看 aliyun.club 当前…

Bugku MISC做题笔记

简单套娃DX 这一题需要对png图片的结构有所了解。详细可参考https://www.w3.org/TR/png/ 幸好每一张图片只有一个错误&#xff0c;逐步调试&#xff0c;就可以发现所有错误&#xff0c;修正即可。具体错误参看python程序中的注释&#xff1a; import ossrc_dir .\\XD\\ de…

适配器模式(Adapter Pattern)

原文地址&#xff1a;https://jaune162.blog/design-pattern/adapter-pattern.html 更多精彩文章请移步&#xff1a;https://jaune162.blog 更多专题系列文章请移步&#xff1a;https://books.jaune162.blog 序言 在软件开发的世界中&#xff0c;我们经常会遇到一个棘手的问题…

Java8中Stream流API最佳实践Lambda表达式使用示例

文章目录 一、创建流二、中间操作和收集操作筛选 filter去重distinct截取跳过映射合并多个流是否匹配任一元素&#xff1a;anyMatch是否匹配所有元素&#xff1a;allMatch是否未匹配所有元素&#xff1a;noneMatch获取任一元素findAny获取第一个元素findFirst归约数值流的使用中…

分布式接口幂等性解析

一、概述 幂等性定义&#xff1a;用户对于同一操作发起的一次请求或者多次请求的结果是一致的&#xff0c;不会因为多次点击而产生了副作用。【同一操作指的是同一个浏览器&#xff0c;发送相同的请求】。 常见场景&#xff1a; 提交订单接口。返回提交结果时网络出现故障&am…

UDF提权

目录 一、UDF概述 二、提权条件 三、漏洞复现 (一) 信息收集 1. Nmap信息收集 1.1、查看当前IP地址 1.2、扫描当前网段&#xff0c;找出目标机器 1.3、快速扫描目标机全端口 2. dirb目录扫描 3. 第一个flag 3.1、目录遍历漏洞 3.2、flag 4. 敏感信息利用 (二) 漏…

重学SpringBoot3-函数式Web

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-函数式Web 函数式Web编程简介RouterFunctionRequestPredicateServerRequestServerResponse 好处示例结论 随着响应式编程范式的兴起和 Java 函数式编程能…

腾讯云服务器多少钱一个月?5元1个月,这价格没谁了

2024腾讯云服务器多少钱一个月&#xff1f;5元1个月起&#xff0c;腾讯云轻量服务器4核16G12M带宽32元1个月、96元3个月&#xff0c;8核32G22M配置115元一个月、345元3个月&#xff0c;腾讯云轻量应用服务器61元一年折合5元一个月、4核8G12M配置646元15个月、2核4G5M服务器165元…

[QJS xmake] 非常简单地在Windows下编译QuickJS!

文章目录 前言准备C编译器xmake编译包 工程准备修改版本号第一遍编译第二遍编译效果 前言 quickjs是个很厉害的东西啊&#xff0c;我一直想编译一下的&#xff0c;奈何一直没成功。现在找了点时间成功编译了&#xff0c;写篇文章记录一下。当前版本&#xff1a;2024-1-13 应该…

插入排序算法记录

插入排序 1.基本思想&#xff1a;左侧的子序列总是有序的。对于每一个位置上的元素&#xff0c;将其与左侧已排序的部分进行比较并插入到合适的位置&#xff0c;直到整个序列有序 2.性能分析&#xff1a; 最好情况&#xff1a;如果输入数组已经是有序的&#xff0c;插入排序只…

原型模式(Clone)——创建型模式

原型模式(clone)——创建型模式 什么是原型模式&#xff1f; 原型模式是一种创建型设计模式&#xff0c; 使你能够复制已有对象&#xff0c; 而又无需依赖它们所属的类。 总结&#xff1a;需要在继承体系下&#xff0c;实现一个clone接口&#xff0c;在这个方法中以本身作为拷…

【你也能从零基础学会网站开发】Web建站之jQuery进阶篇 jQuery自定义插件应用开发

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 jQuery插件开发…