Python基础语法第二章、变量和运算符

news2024/9/24 13:28:42

目录

一、常量和表达式

二、变量和类型

2.1变量是什么

2.2变量的语法

2.2.1定义变量

2.2.2使用变量

2.3变量的类型

2.3.1整数

2.3.2浮点数(小数)

2.3.3字符串

2.3.4布尔

2.3.5其他

2.4动态类型

4.1为什么要有这么多类型?

2.4.2动态类型特性

三、注释

3.1注释是什么

3.2注释的语法

3.3注释的规范

四、输入输出

4.1和用户交互

4.2通过控制台输出

4.3通过控制台输入

五、运算符

5.1算术运算符

5.2关系运算符

5.3逻辑运算符

5.4赋值运算符

5.5其他...


一、常量和表达式

我们可以把 Python 当成一个计算器, 来进行一些算术运算.

print(1 + 2 - 3)
print(1 + 2 * 3)
print(1 + 2 / 3)

注意:
print 是一个 Python 内置的 函数, 这个稍后详细介绍.
可以使用 + - * / ( ) 等运算符进行算术运算. 先算乘除, 后算加减.
运算符和数字之间, 可以没有空格, 也可以有多个空格. 但是一般习惯上写一个空格(比较美观).
形如 1 + 2 - 3 这样是算式, 在编程语言中称为 表达式, 算式的运算结果, 称为 表达式的返回值
其中 1 , 2 , 3 这种称为 字面值常量, + - * / 这种称为 运算符 或者 操作符.
注意: 熟悉 C / Java 的同学可能认为, 2 / 3 结果为 0 (小数部分被截断). 但是在 Python 中得到的结果则是一个小数. 更符合日常使用的直觉. (编程中不存在四舍五入的规则)


二、变量和类型

2.1变量是什么

有的时候, 我们需要进行的计算可能更复杂一些, 需要把一些计算的中间结果保存起来. 这个时候就需要用到变量.

avg = (67.5 + 89.0 + 12.9 + 32.2) / 4
total = (67.5 - avg) ** 2 + (89.0 - avg) ** 2 + (12.9 - avg) ** 2 + (32.2 - avg)
** 2
result = total / 3
print(result)

注意:
avg, total, result 均为变量.
** 在 Python 中表示乘方运算. ** 2 即为求平方

就像计算器中的 M 键功能类似, 通过变量就可以保存计算过程中的中间结果.

变量可以视为是一块能够容纳数据的空间. 这个空间往往对应到 "内存" 这样的硬件设备上. 

PS: 我们可以把内存想像成是一个宿舍楼, 这个宿舍楼上有很多的房间. 每个房间都可以存放数据.衡量内存的一个重要指标就是内存空间的大小, 比如我的电脑内存是 16GB. 这个数字越大, 意味着内存的存储空间就越大, 能够存放的数据(变量) 就越多. 

2.2变量的语法

2.2.1定义变量

a = 10

创建变量的语句非常简单, 其中
a 为变量名. 当我们创建很多个变量的时候, 就可以用名字来进行区分.
= 为赋值运算符, 表示把 = 右侧的数据放到 = 左侧的空间中.

注意: 变量的名字要遵守一定规则. 

硬性规则(务必遵守)

  • 变量名由数字字母下划线构成.
  • 数字不能开头.
  • 变量名不能和 "关键字" 重复.
  • 变量名大小写敏感. num 和 Num 是两个不同的变量名.

软性规则(建议遵守)

  • 变量名使用有描述性的单词来表示, 尽量表达出变量的作用.
  • 一个变量名可以由多个单词构成, 长一点没关系, 但是含义要清晰.
  • 当变量名包含多个单词的时候, 建议使用 "驼峰命名法". 形如 totalCount , personInfo 这种, 除
  • 了首个单词外, 剩余单词首字母大写.

2.2.2使用变量

a = 10
print(a)

可以用一个变量的值赋给另外一个变量.

a = 10
b = 20
a = b
print(a)
print(b)

2.3变量的类型

注意: 和 C++ / Java 等语言不同, Python 变量的类型不需要显式指定, 而是在赋值的时候确定的.

2.3.1整数

a = 10
print(type(a))

PS: type 和 print 类似, 也是 python 内置的函数. 可以使用 type 来查看一个变量的类型. 

注意: 和 C++ / Java 等语言不同, Python 的 int 类型变量, 表示的数据范围是没有上限的. 只要内存足够大, 理论上就可以表示无限大小的数据. (自动扩容)

2.3.2浮点数(小数)

a = 0.5
print(type(a))

注意: 和 C++ / Java 等语言不同, Python 的小数只有 float 一种类型, 没有 double 类型. 但是实际上Python 的 float 就相当于 C++ / Java 的 double, 表示双精度浮点数. 

2.3.3字符串

a = 'hello'
print(type(a))

使用 ' ' 或者 " " 引起来的, 称为 字符串. 可以用来表示文本.

注意: 在 Python 中, 单引号构成的字符串和双引号构成的字符串, 没有区别. 'hello' 和 "hello" 是
完全等价的。
可以使用 len 函数来获取字符串的长度.

a = 'hello'
print(len(a))

可以使用 + 针对两个字符串进行拼接.

a = 'hello'
b = 'world'
print(a + b)

此处是两个字符串相加. 不能拿字符串和整数/浮点数相加.

2.3.4布尔

布尔类型是一个特殊的类型, 取值只有两种, True (真) 和 False (假).

a = True
print(type(a))
b = False
print(type(b))

2.3.5其他

除了上述类型之外, Python 中还有 list, tuple, dict, 自定义类型 等等. 我们后续再介绍.

2.4动态类型

4.1为什么要有这么多类型?

(1) 类型决定了数据在内存中占据多大空间.例如 float 类型在内存中占据 8 个字节。

PS: 计算机里面使用二进制来表示数据. 也就是每个位只能表示 0 或者 1.
1 个二进制位, 就称为是一个 "比特", 8 个二进制位, 就称为一个 "字节" (Byte)
一个 float 变量在内存中占据 8 个字节空间, 也就是 64 个二进制位.

(2) 类型其实约定了能对这个变量做什么样的操作.

例如 int / float 类型的变量, 可以进行 + - * / 等操作,而 str 类型的变量, 只能进行 + (并且行为是字符串拼接), 不能进行 - * / , 但是还能使用 len 等其他操作。

2.4.2动态类型特性

在 Python 中, 一个变量是什么类型, 是可以在 "程序运行" 过程中发生变化的. 这个特性称为 "动态类型" .

a = 10
print(type(a))
a = 'hello'
print(type(a))

 在程序执行过程中, a 的类型刚开始是 int, 后面变成了 str.C++/Java 这样的语言则不允许这样的操作. 一个变量定义后类型就是固定的了. 这种特性则称为 "静态类型".动态类型特性是一把双刃剑.对于中小型程序, 可以大大的解约代码量(比如写一段代码就可以同时支持多种类型).对于大型程序, 则提高了模块之间的交互成本. (程序猿 A 提供的代码难以被 B 理解).


三、注释

3.1注释是什么

注释是一种特殊的代码, 它不会影响到程序的执行, 但是能够起到解释说明的作用, 能够帮助程序猿理解程序代码的执行逻辑.

# 计算 4 个数字 67.5, 89.0, 12.9, 32.2 的方差
avg = (67.5 + 89.0 + 12.9 + 32.2) / 4
total = (67.5 - avg) ** 2 + (89.0 - avg) ** 2 + (12.9 - avg) ** 2 + (32.2 - avg)
** 2
result = total / 3
print(result)

3.2注释的语法

批量注释代码:Ctrl+/

(1) 注释行
使用 # 开头的行都是注释.

# 这是一行注释.

(2) 文档字符串
使用三引号引起来的称为 "文档字符串", 也可以视为是一种注释.
可以包含多行内容,
一般放在 文件/函数/类 的开头.
""" 或者 ''' 均可 (等价).

"""
这是文档字符串
这是文档字符串
"""

3.3注释的规范

1. 内容准确: 注释内容要和代码一致, 匹配, 并在代码修改时及时更新.
2. 篇幅合理: 注释既不应该太精简, 也不应该长篇大论.
3. 使用中文: 一般中国公司都要求使用中文写注释, 外企另当别论.
4. 积极向上: 注释中不要包含负能量(例如 领导 SB 等).


四、输入输出

4.1和用户交互

程序需要和用户进行交互.

  • 用户把信息传递给程序的过程, 称为 "输入".
  • 程序把结果展示给用户的过程, 称为 "输出".

输入输出的最基本的方法就是控制台. 用户通过控制台输入一些字符串, 程序再通过控制台打印出一些字符串.

PyCharm 运行程序, 下方弹出的窗口就可以视为是控制台.

windows 自带的 cmd 程序, 也可以视为是控制台. 

输入输出的最常见方法是图形化界面. 如我们平时用到的 QQ, 浏览器, steam 等, 都不需要用户输入命令,而只是通过鼠标点击窗口点击按钮的方式来操作.

4.2通过控制台输出

Python 使用 print 函数输出到控制台

print('hello')

不仅能输出一个字符串, 还可以输出一个其他类型的变量

a = 10
print(a)
b = True
print(b)

更多的时候, 我们希望能够输出的内容是混合了字符串和变量的.

num = 10
print(f'num = {num}')

注意:

  • 使用 f 作为前缀的字符串, 称为 f-string
  • 里面可以使用 { } 来内嵌一个其他的变量/表达式.

PS: Python 中还支持其他的格式化字符串的方法, 咱们此处只了解这个最简单的即可. 其他的暂时不做介绍. 

4.3通过控制台输入

python 使用 input 函数, 从控制台读取用户的输入.

num = 0
num = input('请输入一个整数: ')
print(f'你输入的整数是 {num}')

注意:

  • input 的参数相当于一个 "提示信息", 也可以没有.
  • input 的返回值就是用户输入的内容. 是字符串类型. 
a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
print(f'a + b = {a + b}')

 此处的结果是字符串拼接, 不是算术运算. 如果要想进行算术运算, 需要先转换类型

a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
a = int(a)
b = int(b)
print(f'a + b = {a + b}')

通过 int( ) 把变量转成了 int 类型.
类似的, 使用 float( ), bool( ), str( ) 等可以完成对应的类型转换. 


五、运算符

5.1算术运算符

像 + - * / % ** // 这种进行算术运算的运算符, 称为 算术运算符

注意1: / 中不能用 0 作为除数. 否则会 抛出异常

print(10 / 0)

异常 是编程语言中的一种常见机制, 表示程序运行过程中, 出现了一些 "意外情况", 导致程序不能继续往下执行了. 

注意2: 整数 / 整数 结果可能是小数. 而不会截断

print(1 / 2)

注意3: % 不是 "百分数", 而是求余数.

print(7 % 2)

注意4: ** 是求乘方. 不光能算整数次方, 还能算小数次方.

print(4 ** 2)
print(4 ** 0.5)

注意5: // 是取整除法(也叫地板除). 整数除以整数, 结果还是整数(舍弃小数部分, 并向下取整. 不是四舍五入)

print(7 // 2)
print(-7 // 2)

5.2关系运算符

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

  • <= 是 "小于等于"
  • >= 是 "大于等于"
  • == 是 "等于"
  • != 是 "不等于"

(1) 如果关系符合, 则表达式返回 True. 如果关系不符合, 则表达式返回 False

a = 10
b = 20
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
print(a == b)
print(a != b)

(2) 关系运算符不光针对整数/浮点数进行比较, 还能针对字符串进行比较.

a = 'hello'
b = 'world'
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
print(a == b)
print(a != b)

 

注意:

  • 直接使用 == 或者 != 即可对字符串内容判定相等. (这一点和 C / Java 不同).
  • 字符串比较大小, 规则是 "字典序" 

关于字典序:想象一个英文词典, 上面的单词都是按照字母顺序排列. 如果首个字母相同, 就比较第二个字母. (就比如著名单词 abandon).我们认为一个单词在词典上越靠前, 就越小. 越靠后, 就越大.

(3) 对于浮点数来说, 不要使用 == 判定相等.

print(0.1 + 0.2 == 0.3)

注意: 浮点数在计算机中的表示并不是精确的! 在计算过程中, 就容易出现非常小的误差. 

print(0.1)
print(0.2)
print(0.3)
print(0.1 + 0.2)

可以看到, 0.1 + 0.2 的结果并非是 0.3 , 而是带了个小尾巴. 虽然这个尾巴非常小了, 但是 == 是锱铢必较的, 仍然会导致 == 的结果为 False.

正确的比较方式: 不再严格比较相等了, 而是判定差值小于允许的误差范围.

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

5.3逻辑运算符

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

  • and 并且. 两侧操作数均为 True, 最终结果为 True. 否则为 False. (一假则假)
  • or 或者. 两侧操作数均为 False, 最终结果为 False. 否则为 True. (一真则真)
  • not 逻辑取反. 操作数本身为 True, 则返回 False. 本身为 False, 则返回 True.
a = 10
b = 20
c = 30
print(a < b and b < c)
print(a < b and b > c)
print(a > b or b > c)
print(a < b or b > c)
print(not a < b)
print(not a > b)

一种特殊写法
a < b and b < c 这个操作等价于 a < b < c . 这个设定和大部分编程语言都不相同.

关于短路求值

和其他编程语言类似, Python 也存在短路求值的规则.

  • 对于 and, 如果左侧表达式为 False, 则整体一定为 False, 右侧表达式不再执行.
  • 对于 or, 如果左侧表达式为 True, 则整体一定为 True, 右侧表达式不再执行.
print(10 > 20 and 10 / 0 == 1)
print(10 < 20 or 10 / 0 == 1)

5.4赋值运算符

(1) = 的使用
= 表示赋值. 这个我们已经用过很多次了. 注意和 == 区分.
= 除了基本的用法之外, 还可以同时针对多个变量进行赋值.

链式赋值

a = b = 10

多元赋值

a, b = 10, 20

代码实例: 交换两个变量

基础写法

a = 10
b = 20
tmp = a
a = b
b = tmp

基于多元赋值

a = 10
b = 20
a, b = b, a

(2) 复合赋值运算符

Python 还有一些 复合赋值运算符. 例如 += -= *= /= %=
其中 a += 1 等价于 a = a + 1 . 其他复合赋值运算符也是同理.

a = 10
a = a + 1
print(a)
b = 10
b += 1
print(b)

注意: 像 C++ / Java 中, 存在 ++ -- 这样的自增/自减运算符. Python 中则不支持这种运算. 如果需要使用,则直接使用 += 1 或者 -= 1++ -- 最大的问题就是容易分不清前置和后置的区别. 这一点 Python 语法在设计的时候就进行了规避, 避免出现这种不直观, 并且容易混淆的语法

5.5其他...

除了上述之外, Python 中还有一些运算符, 比如 身份运算符 (is, is not), 成员运算符 (in, not in), 位运算符( & | ~ ^ << >>) 等.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IT人,别人公司与自家差距到底有多大?

年底&#xff0c;是IT人最心酸的时候。辛辛苦苦了一年&#xff0c;别人家的公司员工人手一台 iPhone14Pro&#xff0c;自家可能连个年会都不开&#xff01;想想就气人 不能笑饱就气饱&#xff0c;省下一顿当赚到 - 1 - 形象 别人公司的IT男帅气又有(发)型 然&#xff0c;我们…

7.3 SpringBoot整合MyBatis分页插件github.pageHelper:实现图书列表API

文章目录 前言一、自己实现分页第一步&#xff0c;count 查询 总记录数&#xff08;totalCount&#xff09;&#xff0c;计算总页数&#xff08;totalPages&#xff09;第二步&#xff0c;limit 查询 指定页数据 二、不考虑分页的查询图书列表MapperBookServiceImplBookListPar…

Redis缓存穿透击穿以及雪崩

5、Reids缓存问题与解决 5.1、背景 Redis作为一种内存性数据库&#xff0c;当查询的数据在redis缓存中时就不需要在到真实的数据库中去查&#xff0c;加快了查询速度和保护了真实数据库的安全&#xff0c;但是同时也引入了一些新的问题&#xff0c;比如查询的数据不在内存和数…

一个人也可以是【大厂】,三年程序员的生活规划心路分享!

自从工作之后&#xff0c;我就经常思考以下这些问题&#xff1a; 还有多久退休&#xff1f;明天可以退休吗&#xff1f;地球什么时候爆炸&#xff1f;我什么时候可以暴富辞职&#xff1f;我真的需要这份工作吗&#xff1f; 要问是从什么时候开始有这些问题的&#xff0c;大概…

Linux环境搭建(一)— 实现ssh连接

Linux环境搭建 一 安装虚拟机1.账号记录&#xff0c;密码root2.权限问题 二 安装ssh1.出错2.误删文件3.安装ifconfig4.安装ssh5.重装ssh6.VI环境不好用7.开放端口8.ssh文件下没有密钥文件9.无法安装ssh 三 连接ssh 写在前面&#xff1a; 使用的是VMware&#xff0c;Ubuntu环境 …

利用这个css属性,你也能轻松实现一个新手引导库

相信大家或多或少都在各种网站上使用过新手引导&#xff0c;当网站提供的功能有点复杂时&#xff0c;这是一个对新手非常友好的功能&#xff0c;可以跟随新手引导一步一步了解网站的各种功能&#xff0c;我们要做的只是点击下一步或者上一步&#xff0c;网站就能滚动到指定位置…

被中文乱码折磨的我在此总结一下编码相关知识

本文大致介绍了三个问题&#xff1a; 常见的字符编码以及他们是如何编码从而被计算机识别的&#xff1f;为什么会有这些字符编码和他们被创建的背景和顺序&#xff1f;常见的乱码问题应该如何防止以及如何解决&#xff1f; 常见的字符编码 ASCII&#xff0c;GB2312&#xff…

(小程序)按钮切换对应展示区域

(小程序)按钮切换对应展示区域 需求&#xff1a;点击按钮切换表格和图表两种展示方式 html <u-button type"primary" size"mini" text"图表" v-if"form.curType table"click"showEcharts"></u-button> <u…

同一个分支maven构建出来的包不一样?

现象 最近发布spring boot项目时遇到了一个奇怪的问题&#xff0c;日志异常信息如下&#xff1a; Caused by: java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing …

Image Watch 的使用

目录 1、下载地址 2、安装完成 3、调试 1、下载地址 Image Watch - Visual Studio Marketplace 2、安装完成 打开VS&#xff0c;在项目->其他窗口中有image watch选项 3、调试 一直放大图像可以查看详细的色彩值&#xff0c;通道数为3

各省绿色创新效率原始数据+测算(2020-2021)

采用了考虑非期望产出的超效率SBM模型来测量中国各省的绿色创新效率。该数据包括原始数据测算结果&#xff0c;包括人力资本、资本、能源投入&#xff0c;以及技术、经济、生态效益等多个维度的数据。可以帮助研究人员了解中国各省的绿色创新效率情况&#xff0c;揭示不同省份在…

搜索引擎概念解析

搜索引擎概念解析 什么是搜索引擎 MySQL搜索引擎举例 搜索引擎是一种用于在互联网上搜索并呈现相关信息的工具。它通过自动扫描和索引大量网页内容&#xff0c;并根据用户提供的关键词或查询条件&#xff0c;返回与之相关的网页链接和摘要。 当用户在搜索引擎中输入关键词或…

系列二、RocketMQ基本概念 系统架构

一、基本概念 1.1、消息&#xff08;Message&#xff09; 消息是指&#xff0c;消息系统所传输信息的物理载体&#xff0c;生产和消费数据的最小单位&#xff0c;每条消息必须输入一个主题。 1.2、主题&#xff08;Topic&#xff09; Topic表示一类消息的集合&#xff0c;每个…

筑牢三大新型能源基础设施,能源变革的分水岭和路线图

当下面临百年未有之大变局&#xff0c;创新科技密集发生&#xff0c;面对瞬息万变的世界&#xff0c;寻找到一条通往未来的确定性道路&#xff0c;绝对是行稳致远的前置条件。 “双碳战略”持续推进&#xff0c;距离2030“碳达峰”越来越近&#xff0c;能源产业变革的重要性和迫…

【SpringMVC 学习笔记】

SpringMVC 笔记记录 1. SpringMVC 简介2. 入门案例3. 基本配置3.1 xml形式配置3.2 注解形式配置 4. 请求4.1 请求参数4.1.1 普通类型传参4.1.2 实体类类型传参4.1.3 数组和集合类型传参 4.2 类型转换器4.3 请求映射 5. 响应 1. SpringMVC 简介 三层架构 2. 入门案例 3. 基本…

如何建立自己的知识体系?202209

知识太多了&#xff0c;无法全部快速吸收进大脑&#xff0c;需要通过特定的方法、技能&#xff0c;在面对大量知识的情况下&#xff0c;快速梳理&#xff0c;构建自己的知识体系。 学习的目标&#xff0c;不仅仅是记忆知识&#xff0c;而是搜索知识、并过滤、洞察、理解、使用…

Spring Boot 整合视图层技术 Thymeleaf

大家好&#xff01;我是今越。简单记录一下在 Spring Boot 框架中如何整合 Thymeleaf 及使用。 Thymeleaf 简介 Thymeleaf 是新一代 Java 模板引擎&#xff0c;它类似于 Velocity、FreeMarker 等传统 Java 模板引擎&#xff0c;但是与传统 Java 模板引擎不同的是&#xff0c;T…

爆肝整理,App测试小技巧,全覆盖功能到性能测试...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 app测试是使用手动…

ES查询[全网最全免费送付费内容]

ES查询 相关度搜索&#xff0c;需要计算评分 _score 相关度评分用于对搜索结果排序&#xff0c;评分越高则认为其结果和搜索的预期值相关度越高&#xff0c;即越符合搜索预期值。在7.x之前相关度评分默认使用TF/IDF算法计算而来&#xff0c;7.x之后默认为BM25。 源数据&…

Win 10 重装系统(PE方式)

前言&#xff1a; 最近这个笔记本&#xff08;ThinkPad E480&#xff0c;使用了四年左右&#xff09;用起来很卡&#xff0c;经常开机状态时&#xff0c;合上之后&#xff0c;再打开屏幕就卡死了&#xff0c;鼠标和键盘按了都没有反应&#xff0c;无奈之下只能强制按电源关机后…