首页 > 编程语言 >从零开始学Python第04课:Python语言元素之运算符

从零开始学Python第04课:Python语言元素之运算符

时间:2023-06-20 10:36:26浏览次数:43  
标签:运算 04 Python 运算符 布尔值 print True 表达式


Python 语言支持很多种运算符,下面的表格按照运算符的优先级从高到低,对 Python 中的运算符进行了罗列。有了变量和运算符,我们就可以构造各种各样的表达式来解决实际问题。在计算机科学中,表达式是计算机程序中的句法实体,它由一个或多个常量、变量、函数和运算符组合而成,编程语言可以对其进行解释和计算以得到另一个值。不管使用什么样的编程语言,构造表达式都是非常重要的。

运算符

描述

[][:]

索引、切片

**


~+-

按位取反、正号、负号

*/%//

乘、除、模、整除

+-

加、减

>><<

右移、左移

&

按位与

^|

按位异或、按位或

<=<>>=

小于等于、小于、大于、大于等于

==!=

等于、不等于

isis not

身份运算符

innot in

成员运算符

notorand

逻辑运算符

=+=-=*=/=%=//=**=&=|=^=>>=<<=

赋值运算符

说明:所谓优先级就是在一个运算的表达式中,如果出现了多个运算符,应该先执行什么再执行什么的顺序。编写代码的时候,如果搞不清楚一个表达式中运算符的优先级,可以使用圆括号来确保运算的执行顺序。

算术运算符

Python 中的算术运算符非常丰富,除了大家最为熟悉的加、减、乘、除之外,还有整除运算符、求模(求余数)运算符和求幂运算符。下面的例子为大家展示了算术运算符的使用。

"""
算术运算符

Version: 1.0
Author: 骆昊
"""
print(321 + 12)     # 加法运算,输出333
print(321 - 12)     # 减法运算,输出309
print(321 * 12)     # 乘法运算,输出3852
print(321 / 12)     # 除法运算,输出26.75
print(321 // 12)    # 整除运算,输出26
print(321 % 12)     # 求模运算,输出9
print(321 ** 12)    # 求幂运算,输出1196906950228928915420617322241

算术运算需要先乘除后加减,这一点跟数学课本中讲的知识没有区别,也就是说乘除法的运算优先级是高于加减法的。如果还有求幂运算,求幂运算的优先级是高于乘除法的。如果想改变算术运算的执行顺序,可以使用英文输入法状态下的圆括号(小括号),写在圆括号中的表达式会被优先执行,如下面的例子所示。

"""
算术运算的优先级

Version: 1.0
Author: 骆昊
"""
print(2 + 3 * 5)           # 17
print((2 + 3) * 5)         # 25
print((2 + 3) * 5 ** 2)    # 125
print(((2 + 3) * 5) ** 2)  # 625

赋值运算符

赋值运算符应该是最为常见的运算符,它的作用是将右边的值赋给左边的变量。赋值运算符还可以跟上面的算术运算符放在一起,组合成复合赋值运算符,例如:a += b相当于a = a + ba *= a + 2相当于a = a * (a + 2)。下面的例子演示了赋值运算符和复合赋值运算符的使用。

"""
赋值运算符和复合赋值运算符

Version: 1.0
Author: 骆昊
"""
a = 10
b = 3
a += b        # 相当于:a = a + b
a *= a + 2    # 相当于:a = a * (a + 2)
print(a)      # 大家算一下这里会输出什么

注意:赋值运算构成的表达式本身不产生任何值,为了解决这个问题,Python 3.8中引入了一个新的赋值运算符:=,我们通常称之为海象运算符,大家可以猜一猜它为什么叫这个名字,我们后面用到的时候再为大家讲解这个运算符。

比较运算符和逻辑运算符

比较运算符也称为关系运算符,包括==!=<><=>=,我相信大家一看就能懂。需要提醒的是比较相等用的是==,请注意这里是两个等号,因为=是赋值运算符,我们在上面刚刚讲到过。比较不相等用的是!=,跟数学课本中使用的从零开始学Python第04课:Python语言元素之运算符_Python并不相同,Python 2中曾经使用过<>来表示不等于,在 Python 3中使用<>会引发SyntaxError(语法错误)。比较运算符会产生布尔值,要么是True要么是False

逻辑运算符有三个,分别是andornotand字面意思是“而且”,所以and运算符会连接两个布尔值或者产生布尔值的表达式,如果两边的布尔值都是True,那么运算的结果就是True;左右两边的布尔值有一个是False,最终的运算结果就是False。当然,如果and运算符左边的布尔值是False,不管右边的布尔值是什么,最终的结果都是False,这时运算符右边的布尔值会被跳过(专业的说法叫短路处理,如果and右边是一个表达式,那么这个表达式不会执行)。or字面意思是“或者”,所以or运算符也会连接两个布尔值或产生布尔值的表达式,如果两边的布尔值有任意一个是True,那么最终的结果就是True。当然,or运算符也是有短路功能的,当它左边的布尔值为True的情况下,右边的布尔值会被短路(如果or右边是一个表达式,那么这个表达式不会执行)。not运算符的后面可以跟一个布尔值,如果not后面的布尔值或表达式是True,那么运算的结果就是False;如果not后面的布尔值或表达式是False,那么运算的结果就是True

"""
比较运算符和逻辑运算符的使用

Version: 1.0
Author: 骆昊
"""
flag0 = 1 == 1
flag1 = 3 > 2
flag2 = 2 < 1
flag3 = flag1 and flag2
flag4 = flag1 or flag2
flag5 = not flag0
print('flag0 =', flag0)     # flag0 = True
print('flag1 =', flag1)     # flag1 = True
print('flag2 =', flag2)     # flag2 = False
print('flag3 =', flag3)     # flag3 = False
print('flag4 =', flag4)     # flag4 = True
print('flag5 =', flag5)     # flag5 = False
print(flag1 and not flag2)  # True
print(1 > 2 or 2 == 3)      # False

说明:比较运算符的优先级高于赋值运算符,所以上面的flag0 = 1 == 1先做1 == 1产生布尔值True,再将这个值赋值给变量flag0print函数可以输出多个值,多个值之间可以用,进行分隔,输出的内容之间默认以空格分开。

运算符和表达式应用举例

例子1:华氏温度转摄氏温度

要求:输入华氏温度将其转换为摄氏温度,华氏温度到摄氏温度的转换公式为:从零开始学Python第04课:Python语言元素之运算符_Python_02

"""
将华氏温度转换为摄氏温度

Version: 1.0
Author: 骆昊
"""
f = float(input('请输入华氏温度: '))
c = (f - 32) / 1.8
print('%.1f华氏度 = %.1f摄氏度' % (f, c))

说明:上面代码中的input函数用于从键盘接收用户输入,由于输入的都是字符串,如果想处理成浮点小数来做后续的运算,可以用我们上一课讲解的类型转换的方法,用float函数将str类型处理成float类型。

上面的代码中,我们对print函数输出的内容进行了格式化处理,print输出的字符串中有两个%.1f占位符,这两个占位符会被%之后的(f, c)中的两个float类型的变量值给替换掉,浮点数小数点后保留1位有效数字。如果字符串中有%d占位符,那么我们会用int类型的值替换掉它,如果字符串中有%s占位符,那么它会被str类型的值替换掉。

除了上面格式化输出的方式外,Python 中还可以用下面的办法来格式化输出,我们给出一个带占位符的字符串,字符串前面的f表示这个字符串是需要格式化处理的,其中的{f:.1f}{c:.1f}可以先看成是{f}{c},表示输出时会用变量f和变量c的值替换掉这两个占位符,后面的:.1f表示这是一个浮点数,小数点后保留1位有效数字。

"""
将华氏温度转换为摄氏温度

Version: 1.1
Author: 骆昊
"""
f = float(input('请输入华氏温度: '))
c = (f - 32) / 1.8
print(f'{f:.1f}华氏度 = {c:.1f}摄氏度')

例子2:计算圆的周长和面积

要求:输入一个圆的半径,计算出它的周长(从零开始学Python第04课:Python语言元素之运算符_赋值运算符_03)和面积(从零开始学Python第04课:Python语言元素之运算符_Python_04)。

"""
输入半径计算圆的周长和面积

Version: 1.0
Author: 骆昊
"""
radius = float(input('请输入圆的半径: '))
perimeter = 2 * 3.1416 * radius
area = 3.1416 * radius * radius
print('周长: %.2f' % perimeter)
print('面积: %.2f' % area)

Python 中有一个名为math 的内置模块,该模块中定义了名为pi的变量,它的值就是圆周率。如果要使用 Python 内置的这个pi,我们可以对上面的代码稍作修改。

"""
输入半径计算圆的周长和面积

Version: 1.1
Author: 骆昊
"""
import math

radius = float(input('请输入圆的半径: '))
perimeter = 2 * math.pi * radius
area = math.pi * radius ** 2
print(f'周长: {perimeter:.2f}')
print(f'面积: {area:.2f}')

说明:上面代码中的import math表示导入math模块,导入该模块以后,才能用math.pi得到圆周率的值。

这里其实还有一种格式化输出的方式,是 Python 3.8 中增加的新特性,大家直接看下面的代码就明白了。

"""
输入半径计算圆的周长和面积

Version: 1.2
Author: 骆昊
"""
import math

radius = float(input('请输入圆的半径: '))  # 输入: 5.5
perimeter = 2 * math.pi * radius
area = math.pi * radius ** 2
print(f'{perimeter = :.2f}')  # 输出:perimeter = 34.56
print(f'{area = :.2f}')       # 输出:area = 95.03

说明:假如变量a的值是9.87,那么字符串f'{a = }'的值是a = 9.87;而字符串f'{a = :.1f}'的值是a = 9.9。这种格式化输出的方式会同时输出变量名和变量值。

例子3:判断闰年

要求:输入一个1582年以后的年份,判断该年份是不是闰年。

"""
输入年份,闰年输出True,平年输出False

Version: 1.0
Author: 骆昊
"""
year = int(input('请输入年份: '))
is_leap = year % 4 == 0 and year % 100 != 0 or year % 400 == 0
print(is_leap)

说明:对于格里历(Gregorian calendar),即今天我们使用的公历,判断闰年的规则是:1. 公元年份非4的倍数是平年;2. 公元年份为4的倍数但非100的倍数是闰年;3. 公元年份为400的倍数是闰年。格里历是由教皇格里高利十三世在1582年10月引入的,作为对儒略历(Julian calendar)的修改和替代,我们在输入年份时要注意这一点。上面的代码通过%来判断year是不是4的倍数、100的倍数、400的倍数,然后用andor运算符将三个条件组装在一起,前两个条件要同时满足,第三个条件跟前两个条件的组合只需满足其中之一。

总结

通过上面的讲解和例子,相信大家已经感受到了运算符和表达式的力量。实际编程中的很多问题,都需通过构造表达式来解决,所以变量、运算符、表达式对于任何一门编程语言都是极为重要的基础。如果本节课的内容有什么不理解的地方,一定不要着急进入下一课,先在评论区留言讨论,我会及时解答大家的问题。


标签:运算,04,Python,运算符,布尔值,print,True,表达式
From: https://blog.51cto.com/u_16166070/6520913

相关文章

  • 一文掌握Python多线程与多进程
    Python的多线程和多进程一、简介并发是今天计算机编程中的一项重要能力,尤其是在面对需要大量计算或I/O操作的任务时。Python提供了多种并发的处理方式,本篇文章将深入探讨其中的两种:多线程与多进程,解析其使用场景、优点、缺点,并结合代码例子深入解读。二、多线程Python中的线......
  • 从零开始学Python第03课:Python语言中的变量
    对于想学习编程的新手来说,有两个问题可能是他们很想知道的,其一是“什么是(计算机)程序”,其二是“写(计算机)程序能做什么”。先说说我对这两个问题的理解:程序是数据和指令的有序集合,写程序就是用数据和指令控制计算机做我们想让它做的事情。今时今日,为什么有那么多人选择用Python语言......
  • 从零开始学Python第01课:初识Python
    Python简介Python(英式发音:/ˈpaɪθən/;美式发音:/ˈpaɪθɑːn/)是由荷兰人吉多·范罗苏姆(GuidovonRossum)发明的一种编程语言,是目前世界上最受欢迎和拥有最多用户群体的编程语言。Python强调代码的可读性和语法的简洁性,相较于C或Java,Python让使用者能够用更少的代码表达自己......
  • Ubuntu22.04安装FFmpeg
    参考文章https://phoenixnap.com/kb/install-ffmpeg-ubuntu依次输入以下三个命令即可sudoaptupdate&&sudoaptupgradesudoaptinstallffmpegffmpeg-version 安装好以后可以通过以下命令验证一下:ffplay 视频文件 看能否正常播放  参考文章复制粘贴如下:I......
  • 从零开始学Python第12课:常用数据结构之集合
    在学习了列表和元组之后,我们再来学习一种容器型的数据类型,它的名字叫集合(set)。说到集合这个词大家一定不会陌生,在数学课本上就有这个概念。如果我们把一定范围的、确定的、可以区别的事物当作一个整体来看待,那么这个整体就是集合,集合中的各个事物称为集合的元素。通常,集合需要满足......
  • 从零开始学Python第14课:函数和模块
    在讲解本节课的内容之前,我们先来研究一道数学题,请说出下面的方程有多少组正整数解。你可能已经想到了,这个问题其实等同于将8个苹果分成四组且每组至少一个苹果有多少种方案,也等价于在分隔8个苹果的7个间隙之间放入三个隔断将苹果分成四组有多少种方案,所以答案是$C_7^3=35C_{7}^{......
  • 从零开始学Python第11课:常用数据结构之字符串
    第二次世界大战促使了现代电子计算机的诞生,世界上的第一台通用电子计算机名叫ENIAC(电子数值积分计算机),诞生于美国的宾夕法尼亚大学,占地167平米,重量约27吨,每秒钟大约能够完成约5000次浮点运算,如下图所示。ENIAC诞生之后被应用于导弹弹道的计算,而数值计算也是现代电子计算机最为重......
  • 从零开始学Python第10课:常用数据结构之元组
    前面的两节课,我们为大家讲解了Python中的列表,它是一种容器型的数据类型,通过列表类型的变量,我们可以保存多个数据并通过循环实现对数据的批量操作。当然,Python中还有其他容器型的数据类型,接下来我们就为大家讲解另一种容器型的数据类型,它的名字叫元组(tuple)。元组的定义和运算在P......
  • 从零开始学Python第08课:常用数据结构之列表-1
    在开始本节课的内容之前,我们先给大家一个编程任务,将一颗色子掷6000次,统计每种点数出现的次数。这个任务对大家来说应该是非常简单的,我们可以用1到6均匀分布的随机数来模拟掷色子,然后用6个变量分别记录每个点数出现的次数,相信通过前面的学习,大家都能比较顺利的写出下面的代码。"""......
  • 从零开始学Python第02课:第一个Python程序
    在上一课中,我们对Python语言的过去现在有了一些了解,我们准备好了运行Python程序所需要的解释器环境。相信大家已经迫不及待的想开始自己的Python编程之旅了,但是新问题来了,我们应该在什么地方书写Python程序,然后又怎么运行它呢?编写和运行代码的工具下面我们为大家讲解几种可......