当前位置: 首页 > news >正文

【Python】Python基础

文章目录

  • 一、字面值常量和表达式
  • 二、变量
    • 2.1 定义变量
    • 2.2 变量的命名规则
    • 2.3 变量的类型
    • 2.4 不同类型大小
    • 2.5 动态类型
  • 三、注释
  • 四、输入与输出
  • 五、运算符
    • 5.1 算术运算符
    • 5.2 关系运算符
    • 5.3 逻辑运算符
    • 5.4 赋值运算符

一、字面值常量和表达式

print(1 + 2 * 3) # 7
print(1 + 2 / 3) # 1.6666666666666665

这里的1 + 2 * 3就被称为表达式,表达式的运算结果称为表达式的返回值,而像1,2,3这样的数字称为字面值常量

细节:

在C/C++中,2 / 3是向下取整,而在Python中则是变成了浮点数。
并且Python中不存在四舍五入的概念,所以第二个表达式的结果如上,Python中浮点数在内存中的存储遵循IEEE754标准。

二、变量

2.1 定义变量

跟C/C++一样,Python也有变量

a = 100 + 120
print(a) # 220

这里的a就是变量
变量存在的目的就是把结果保存起来,方便后续使用

2.2 变量的命名规则

  • 变量名由数字、字母、下划线构成。
  • 变量名不能以数字开头。
  • 变量名不能和Python的“关键字”重复。
  • 变量名大小写敏感,比如num和Num是两个不同的变量名。

2.3 变量的类型

Python中变量的类型不需要在定义的时候显式声明,是根据初始化的值的类型来进行确定的。

  • 整数 int
a = 1
print(type(a)) # <class 'int'>

细节:

与C/C++等其他语言不同的是,Python中int类型的变量能够表示的数据范围是没有上限的,只要内存足够大,理论上就可以表示无限大的数据。

  • 浮点数 float
a = 1.01
print(type(a)) # <class 'float'>

与C/C++等其他语言不同的是,Python中的浮点数只有float一种类型,没有double类型,实际上Python中的float就相当于C/C++等语言中的double类型,表示双精度浮点数

  • 字符串 str
a = 'abc'
print(type(a))

Python语法要求字符串必须要用引号括起来(单引号双引号三引号都行)

如果字符串本身包含引号呢?

a = "my name is "yyh"" # error

正确写法:

a = "my name is 'yyh'"
b = 'my name is "yyh"'

字符串中有单引号,就用双引号引起来
字符串中有双引号,就用单引号引起来

如果同时有单引号和双引号呢?

可以使用三引号

'''或"""
a = '''My 'name' is "yyh"'''
print(a) # My 'name' is "yyh"

字符串也可以使用len来获取长度

a = 'abcdef'
print(len(a)) # 6

跟C++一样,可以使用+对两个字符串进行拼接,比如:

a = 'abcdef'
b = 'ghi'
c = a + b
print(c) # abcdefghi
  • 布尔 bool

布尔类型的取值只有两种,True(真)和False(假)。
特别注意大小写

a = True
print(a) # True
a = 10
b = 20
print(a == b) # False

2.4 不同类型大小

int 默认四个字节,可以动态扩容
float 固定八个字节
bool 一个字节
str 变长的

2.5 动态类型

动态类型与静态类型:

  • 动态类型: 在运行时,解释器基于变量值的类型决定变量的类型。
  • 静态类型: 在编译时,编译器基于所声明的数据类型确定变量的类型。

C/C++等大多数语言都是静态类型语言,在编写静态类型语言的代码时,必须声明变量的数据类型,而Python则是一种动态类型语言, 因此在编写Python代码时不用声明变量的数据类型。

a = 10
print(type(a)) # <class 'int'>
a = '10'
print(type(a)) # <class 'str'>

三、注释

Python有两种注释方法:
1️⃣ 注释行

# 这是一个注释

2️⃣ 文档字符串

"""
这是一个注释
"""

单引号双引号同理

四、输入与输出

输入输出的最基本的方法就是控制台,用户可以通过控制台输入一些字符串传递给程序,程序再通过控制台将其运行结果展示给用户。

  • 输出
a = 100
print(a) # 100

格式化输出:

预期格式化输出:a = 100

a = 100
print(f"a = {a}") # a = 100

使用f作为前缀的字符串,称为f-string。

  • 输入
num = input('请输入一个数字: ')
print(f"输入的数字是 {num}")# 请输入一个数字: 5
# 输入的数字是 5

input的返回值就是用户输入的内容,是字符串类型。

a = input('请输入第一个数字: ')
b = input('请输入第二个数字: ')
print(f"a + b = {a + b}")
请输入第一个数字: 123
请输入第二个数字: 456
a + b = 123456

如果想要进行算术运算,那么需要在运算前对读取到的值进行类型转换。比如:

a = input('请输入第一个数字: ')
b = input('请输入第二个数字: ')
a = int(a)
b = int(b)
print(f"a + b = {a + b}")
请输入第一个数字: 123
请输入第二个数字: 456
a + b = 579

五、运算符

5.1 算术运算符

Python中的算术运算符,包括+-*/%**(幂)、//(地板除)。

注意事项:

两个整数相除后可能得到的是一个浮点数。不会舍弃小数
**可以求一个数的整数次方,也可以求一个数的小数次方
//是地板除,整数除以整数得到的结果还是整数(舍弃小数部分,向下取整)

5.2 关系运算符

<<=>>===!= 这一系列的运算符称为 关系运算符, 它们是在比较操作数之间的关系。

这里特殊说一下两个字符串也可以直接比较大小。

用的是字典序比较

而浮点数比较不能直接使用==来判断两个浮点数是否相等,因为浮点数在计算机中的表示并不是精确的。比如:

print(0.1 + 0.2 == 0.3) # False
print(0.1 + 0.2) # 0.30000000000000004

正确的比较方式应该是,判定这两个浮点数的差值是否小于允许的误差范围。比如:

a = 0.1 + 0.2
b = 0.3
print(-0.000001 < (a - b) < 0.000001)  # True

5.3 逻辑运算符

and or not 这一系列的运算符称为逻辑运算符

  • and:并且。两侧操作数均为True,则最终结果为True,否则为False(一假则假)
  • or:或者。两侧操作数均为False,则最终结果为False,否则为True(一真则真)
  • not:逻辑取反。操作数本身为True,则返回False,本身为False,则返回True。
a = 100
b = 200
print(not a > b) # True

细节问题:

在Python中支持连续比较,a < b and b < c等价于a < b < c,这个设定与其他编程语言都不相同。

5.4 赋值运算符

  • =的使用

链式赋值是使用=同时对多个变量进行赋值的常见方式,比如:

a = b = 100
print(f"a = {a}, b = {b}") # a = 100, b = 100

多元赋值:

a, b = 100, 200
print(f"a = {a}, b = {b}") # a = 100, b = 200

多元赋值能帮我们解决一些特殊问题,比如完成两个变量的交换

a, b = 100, 200
a, b = b, a
print(a, b) # 200 100
  • 复合赋值运算符

对于复合赋值运算符+=来说,a += 1等价于a = a + 1,其他复合赋值运算符也是类似的道理。

注意:

C/C++等某些语言中支持++和–运算符,但Python中不支持这种运算符,如果需要对变量进行自增/自减,则直接进行对应的+= 1/-= 1操作。

相关文章:

【Python】Python基础

文章目录 一、字面值常量和表达式二、变量2.1 定义变量2.2 变量的命名规则2.3 变量的类型2.4 不同类型大小2.5 动态类型 三、注释四、输入与输出五、运算符5.1 算术运算符5.2 关系运算符5.3 逻辑运算符5.4 赋值运算符 一、字面值常量和表达式 print(1 2 * 3) # 7 print(1 2 …...

gitlab环境准备

1.准备环境 gitlab只支持linux系统&#xff0c;本人在虚拟机下使用Ubuntu作为操作系统&#xff0c;gitlab镜像要使用和操作系统版本对应的版本&#xff0c;(ubuntu18.04,gitlab-ce_13.2.3-ce.0_amd64 .deb) book100ask:/$ lsb_release -a No LSB modules are available. Dist…...

Apache Doris (五十四): Doris Join类型 - Bucket Shuffle Join

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录...

【AI】行业消息精选和分析(23-11-20)

技术发展 &#x1f3a8; LCM即时绘画&#xff0c;体验所见所得&#xff1a; - LCM LoRA支持即时绘图生成&#xff0c;体验直观。 - 在线体验地址提供直接访问。 - 清华大学SimianLuo开发&#xff0c;加速稳定扩散模型运行。 &#x1f48a; VM Pill&#xff1a;可吞咽装置追踪生…...

Matplotlib实现Label及Title都在下方的最佳姿势

Matplotlib实现Label及Title都在下方的最佳姿势 1. 问题背景2. 基本思想&#xff08;可以不看&#xff09;3. 方法封装4. 调用实例5. 总结6. 起飞 1. 问题背景 用python绘制下面这种图的时候&#xff0c;一般用xlable作为子图的标题&#xff0c;这是因为plt.title()方法绘制的…...

使用 uWSGI 部署 Django 应用详解

概要 部署 Django 应用到生产环境是一个至关重要的步骤&#xff0c;其中选择合适的 WSGI 服务器对于确保应用的稳定性和性能至关重要。uWSGI 是一个流行的选择&#xff0c;它不仅高效、轻量&#xff0c;还非常灵活。本文将详细介绍如何使用 uWSGI 来部署 Django 应用&#xff…...

MyBatis在注解中使用动态查询

以前为了使用注解并在注解中融入动态查询&#xff0c;会使用Provider。后来发现只要加入"<script>包含动态查询的SQL语句</script>"就可以了。 例如&#xff1a; Select("<script>" "select v.*,u.avatar,u.nickname from videos…...

百云齐鲁 | 云轴科技ZStack成功实践精选(山东)

山东省作为我国重要的工业基地和北方地区经济发展的战略支点&#xff0c;在“十四五”规划中将数字强省建设分为数字基础设施、数字科技、数字经济、数字政府、数字社会、数字生态六大部分&#xff0c;涵盖政治、经济、民生等多个方面&#xff0c;并将大数据、云计算、人工智能…...

【Electron】electron-builder打包失败问题记录

文章目录 yarn下载的包不支持require()winCodeSign-2.6.0.7z下载失败nsis-3.0.4.1.7z下载失败待补充... yarn下载的包不支持require() 报错内容&#xff1a; var stringWidth require(string-width)^ Error [ERR_REQUIRE_ESM]: require() of ES Module /stuff/node_modules/…...

OpenCV快速入门:直方图、掩膜、模板匹配和霍夫检测

文章目录 前言一、直方图基础1.1 直方图的概念和作用1.2 使用OpenCV生成直方图1.3 直方图归一化1.3.1 直方图归一化原理1.3.2 直方图归一化公式1.3.3 直方图归一化代码示例1.3.4 OpenCV内置方法&#xff1a;normalize()1.3.4.1 normalize()方法介绍1.3.4.2 normalize()方法参数…...

HDD与QLC SSD深度对比:功耗与存储密度的终极较量

在当今数据世界中&#xff0c;存储设备的选择对于整体系统性能和能耗有着至关重要的影响。硬盘HDD和大容量QLC SSD是两种主流的存储设备&#xff0c;而它们在功耗方面的表现是许多用户关注的焦点。 扩展阅读&#xff1a; 1.面对SSD的步步紧逼&#xff0c;HDD依然奋斗不息 2.…...

医疗软件制造商如何实施静态分析,满足 FDA 医疗器械网络安全验证

随着 FDA 对网络安全验证和标准提出更多要求&#xff0c;医疗软件制造商需要采用静态分析来确保其软件满足这些新的安全标准。继续阅读以了解如何实施静态分析来满足这些安全要求。 随着 FDA 在其软件验证指南中添加更多网络安全要求&#xff0c;医疗设备制造商可以转向静态分…...

【设计模式】聊聊策略模式

策略模式的本质是为了消除if 、else代码&#xff0c;提供拓展点&#xff0c;对拓展开放&#xff0c;对修改关闭&#xff0c;也就是说我们开发一个功能的时候&#xff0c;要尽量的采用设计模式进行将不变的东西进行抽取出来&#xff0c;将变化的东西进行隔离开来&#xff0c;这样…...

二维偏序问题

偏序 偏序(Partial Order)的概念: 设 A 是一个非空集,P 是 A 上的一个关系,若 P 满足下列条件: Ⅰ 对任意的 a ∈ A,(a, a) ∈ P;(自反性 reflexlve)Ⅱ 若 (a, b) ∈ P,且 (b, a) ∈ P,则 a = b;(反对称性,anti-symmentric)Ⅲ 若 (a, b) ∈ P,(b, c) ∈ P,则 (a,…...

解析Spring Boot中的CommandLineRunner和ApplicationRunner:用法、区别和适用场景详解

在Spring Boot应用程序中&#xff0c;CommandLineRunner和ApplicationRunner是两个重要的接口&#xff0c;它们允许我们在应用程序启动后执行一些初始化任务。本文将介绍CommandLineRunner和ApplicationRunner的区别&#xff0c;并提供代码示例和使用场景&#xff0c;让我们更好…...

谷歌浏览器版本下载

Chrome 已是最新版本 版本 119.0.6045.160&#xff08;正式版本&#xff09; &#xff08;64 位&#xff09; 自定义chrome https://www.sysgeek.cn/chrome-new-tab-page-customize/ chrome怎么把标签放主页 https://g.pconline.com.cn/x/1615/16153935.html 谷歌浏览器怎么设…...

js 打开页面的方法总结

文章目录 前言1.window.open2.location.href / window.location.href3.location.replace4.a标签跳转 前言 本文总结 JS 打开新页面/窗口的方法 1.window.open 打开一个新的浏览器页面或者标签页,可以设置新页面的参数 window.open(url,name,specs,replace)参数1:url a. 必须…...

element UI表格中设置文字提示(tooltip)或弹出框(popover)时候注意的地方

在表格中自定义内容的时候需要使用标签&#xff0c;否则无法正常显示 文档中有两种写法&#xff1a;1、使用 slot“reference” 的具名插槽&#xff0c;2、使用自定义指令v-popover指向 Popover 的索引ref。 使用tooltip 时用具名 slot 分发content&#xff0c;替代tooltip中…...

【网络】OSI模型 与 TCP/IP模型 对比

一、OSI模型 OSI模型包含7个层次&#xff0c;从下到上分别是&#xff1a; 1. 物理层&#xff08;Physical Layer&#xff09; - 功能&#xff1a;处理与电子设备物理接口相关的细节&#xff08;如电压、引脚布局、同步&#xff0c;等等&#xff09;。 - 协议&#xff1a;以…...

[Docker]记一次使用jenkins将镜像文件推送到Harbor遇到的问题

系统版本&#xff1a; Ubuntu 18.01 私服&#xff1a; Harbor Docker版本&#xff1a; Docker version 18.09.5 首先需要明确的是&#xff0c;即在harbor里项目设置为公开&#xff0c;但是在push的时候还是需要用户验证的&#xff0c;即需要使用docker登录 docker login harbo…...

龙芯 Loongson 架构 UOS 系统编译 Qt 5.15.2 源码

背景 需要在龙芯&#xff08;Loongson&#xff09;CPU&#xff0c;UOS 系统下&#xff0c;进行国产化项目适配&#xff0c;UOS 自带 Qt 5.11&#xff0c;但是版本过老&#xff0c;与目前基于 Qt 5.15.2 项目存在不兼容情况&#xff0c;故需要自行编译 Qt 5.15.2开发环境。 软…...

【IDEA 使用easyAPI、easyYapi、Apifox helper等插件时,导出接口文档缺少代码字段注释的相关内容、校验规则的解决方法】

问题 IDEA 使用easyAPI、easyYapi、Apifox helper等插件时&#xff0c;导出的接口文档上面&#xff0c;缺少我们代码里的注解字段&#xff0c;如我们规定了NOTNULL、字段描述等。 问题链接&#xff0c;几个月之前碰到过&#xff0c;并提问了&#xff0c;到现在解决&#xff0c…...

asp.net在线考试系统+sqlserver数据库

asp.net在线考试系统sqlserver数据库主要技术&#xff1a; 基于asp.net架构和sql server数据库 功能模块&#xff1a; 首页 登陆 用户角色 管理员&#xff08;对老师和学生用户的增删改查&#xff09;&#xff0c;老师&#xff08;题库管理 选择题添加 选择题查询 判断题添加…...

CRM按行业细分的重要性

很多企业和销售会诟病CRM系统不够贴合行业、功能也不够细分和实用。因为各行各业的业务千差万别&#xff0c;所以功能完备、使用满意度高的CRM一定是与不同行业业务场景高度匹配的&#xff0c;是深度行业化的。因此行业化是CRM发展的重要趋势之一&#xff0c;为什么CRM一定要走…...

自动化测试测试框架封装改造

PO模式自动化测试用例 PO设计模式是自动化测试中最佳的设计模式&#xff0c;主要体现在对界面交互细节的封装&#xff0c;在实际测试中只关注业务流程就可以了。 相较于传统的设计&#xff0c;在新增测试用例后PO模式有如下优点&#xff1a; 1、易读性强 2、可扩展性好 3、…...

C#可空类型

在C#中&#xff0c;可空类型&#xff08;Nullable types&#xff09;允许值类型&#xff08;比如int, double, bool等&#xff09;接受null值。这是特别有用的&#xff0c;因为在很多应用程序中&#xff0c;如数据库交互和数据解析&#xff0c;值类型的字段可能需要表示没有值&…...

R语言:利用biomod2进行生态位建模

在这里主要是分享一个不错的代码&#xff0c;喜欢的可以慢慢研究。我看了一遍&#xff0c;觉得里面有很多有意思的东西&#xff0c;供大家学习和参考。 利用PCA轴总结的70个环境变量&#xff0c;利用biomod2进行生态位建模&#xff1a; #------------------------------------…...

如何学习算法

在不知其所以然的情况下&#xff0c;算法只是一堆离散的机械步骤&#xff0c;缺少背后的思想的支撑&#xff0c; 这些步骤之间就没有一个本质层面上的关联&#xff08;先知亚里士多德早就指出&#xff1a;学习即联接&#xff09;。 所以就跟背历史书也没多大区别。然而&#xf…...

MFC/QT 一些快要遗忘的细节:

1&#xff1a;企业应用中&#xff0c;MFC平台除了用常见的对话框模式还有一种常用的就是单文档模式&#xff0c; 维护别人的代码&#xff0c;不容易区分,其实找与程序同名的cpp就知道了&#xff0c;比如项目名称为 DoCMFCDemo&#xff0c;那么就看BOOL CDocMFCDemoApp::InitI…...

常见的面试算法题:阶乘、回文、斐波那契数列

1.阶乘算法 Factorial 例如&#xff1a;给出数字5&#xff0c;对其以下的的每个数字相乘&#xff0c;结果等于120 解&#xff1a;递归 Recursive function factorial(n) {// 如果n为0或1&#xff0c;阶乘是1if (n 0 || n 1) {return 1;}// 否则&#xff0c;返回n乘以n-1的…...