python基本运算符_06-Python基础知识学习---基本运算符

算术运算符

python支持的算数运算符与数学上计算的符号使用是一致的(x = 5 , y = 2):

算术运算符

描述

示例

+

两个对象相加

x + y = 7

-

两个对象相减

x - y = 3

*

两个对象相乘

x * y = 10

/

除,返回值保留整数和小数部分

x / y = 2.5

//

整除,只保留整数部分

x // y = 2

%

取余数

x % y = 1

**

一个数的n次方

x ** y = 25

x = 5

y = 2

print(f"x + y = {x + y}")

print(f"x - y = {x - y}")

print(f"x * y = {x * y}")

print(f"x / y = {x / y}")

print(f"x // y = {x // y}")

print(f"x % y = {x % y}")

print(f"x ** y = {x ** y}")

# x + y = 7

# x - y = 3

# x * y = 10

# x / y = 2.5

# x // y = 2

# x % y = 1

# x ** y = 25

比较运算符

比较运算用来对两个值进行比较,返回的是布尔值(x = 5,y = 2):

比较运算符

描述

示例

==

相等

x ==y // False

!=

不相等

x !=y // True

>

大于

x > y // True

>=

大于等于

x >= y // True

<

小于

x < y // False

<=

小于等于

x <= y // False

x = 5

y = 2

print(f"x == y = {x == y}")

print(f"x != y = {x != y}")

print(f"x > y = {x > y}")

print(f"x >= y = {x >= y}")

print(f"x < y = {x < y}")

print(f"x <= y = {x <= y}")

# x == y = False

# x != y = True

# x > y = True

# x >= y = True

# x < y = False

# x <= y = False

赋值运算符

python语法中除了有=号这种简单的赋值运算外,还支持增量赋值、链式赋值、交叉赋值、解压赋值,这些赋值运算符存在的意义都是为了让我们的代码看起来更加精简。

增量赋值

赋值运算符

描述

示例

+=

加法赋值运算符

x += 1 相当于 x = x + 1

-=

减法赋值运算符

x -= 1 相当于 x = x - 1

*=

乘法赋值运算符

x *= 1 相当于 x = x * 1

/=

除法赋值运算符

x /= 1 相当于 x = x / 1

//=

整除赋值运算符

x //= 1 相当于 x = x // 1

%=

取余赋值运算符

x %= 1 相当于 x = x % 1

**=

幂赋值运算符

x **= 1 相当于 x = x ** 1

x = 5

x += 2

print(f"x += 2 = {x}") # 7

x = 5

x -= 2

print(f"x -= 2 = {x}") # 3

x = 5

x *= 2

print(f"x *= 2 = {x}") # 10

x = 5

x /= 2

print(f"x /= 2 = {x}") # 2.5

x = 5

x //= 2

print(f"x //= y = {x}") # 2

x = 5

x %= 2

print(f"x %= y = {x}") # 1

x = 5

x **= 2

print(f"x **= y = {x}") # 25

链式赋值

如果我们想把同一个值同时赋值给多个变量名可以这么做:

z = 10

y = z

x = y

print(x, y, z) # 10 10 10

链式赋值指的是可以用一行代码搞定这件事:

x = y = z = 10

print(x, y, z) # 10 10 10

交叉赋值

如果我们想交换两个变量的值可以这么做:

x = 10

y = 20

print(f"x = {x}, y = {y}")

# x = 10, y = 20

temp = x

x = y

y = temp

print(f"x = {x}, y = {y}") # x = 20, y = 10

交叉赋值指的是一行代码可以搞定这件事:

x = 10

y = 20

print(f"x = {x}, y = {y}") # x = 10, y = 20

x, y = y, x

print(f"x = {x}, y = {y}") # x = 20, y = 10

解压赋值

如果我们想把列表中的多个值取出来依次赋值给多个变量名可以这么做:

numbers = [1, 2, 3]

a = numbers[0]

b = numbers[1]

c = numbers[2]

print(a, b, c) # 1 2 3

解压赋值指的是一行代码可以搞定这件事:

numbers = [1, 2, 3]

a, b, c = numbers

print(a, b, c) # 1 2 3

解压赋值时等号左边的变量名个数必须与右面包含值的个数相同,否则会报错:

numbers = [1, 2, 3]

# 变量个数少了

a, b = numbers

# Traceback (most recent call last):

# File "/Users/fqyy/Downloads/Code/Learn/Python/demo.py", line 3, in # a, b = numbers

# ValueError: too many values to unpack (expected 2)

# 变量个数多了

a, b, c, d = numbers

# Traceback (most recent call last):

# File "/Users/fqyy/Downloads/Code/Learn/Python/demo.py", line 11, in

# a, b, c, d = numbers

# ValueError: not enough values to unpack (expected 4, got 3)

如果我们只想取头尾的几个值可以用 *变量名 进行匹配,此时Python会将没有对应关系的值存成列表然后赋值给紧跟其后的变量名:

numbers = [1, 2, 3, 4, 5, 6]

# 取前面两个

a, b, *_ = numbers print(a, b) # 1 2

# 取后面两个

*_, a, b = numbers print(a, b) # 5 6

注意: 这里的 _ 是变量名,一般自己定义变量的时候不要使用下划线( _ )开头和结尾,或者直接使用下划线( _ ),从Python的规范上来说它们都有特殊的用处,所有自己定义的变量不要去用。比如这里直接使用下划线( _ )接受数据表示该变量一般不会使用,仅仅做为占位符。

除了列表外,字符串、字典、元组、集合类型都支持解压赋值:

# 列表

l = [1, 2, 3]

a, b, c = l

print(a, b, c) # 1 2 3

# 元祖

t = (4, 5, 6)

a, b, c = t

print(a, b, c) # 4 5 6

# 集合

s = {7, 8, 9}

a, b, c = s

print(a, b, c) # 8 9 7

# 字符串

a, b, c = "abc"

print(a, b, c) # a b c

# 字典 获取的是key值

a, b, c = {"name": "Tom", "age": 18, "gender": "男"}

print(a, b, c) # name age gender

逻辑运算符

逻辑运算符

描述

and

逻辑与,只有当两个对象都是True的时候返回True, 否则返回False

or

逻辑或,只有当两个对象都是False的时候返回False,否则返回True

not

取反

逻辑运算符用于连接多个条件进行关联判断,会返回布尔值:

# 逻辑与

print(1 and 2) # 2

print(1 and 0) # 0

print(0 and 0) # 0

# 逻辑或

print(1 or 2) # 1

print(1 or 0) # 1

print(0 or 0) # 0

# 逻辑非

print(not 1) # False

print(not 0) # True

可以用and连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为False,则无需再往右判断,可以立即判定最终结果就为False;只有在所有条件的结果都为True的情况下,最终结果才为True:

# 多个and

# 有一个是False就为False

print(1 and 0 and 2) # 0

# 全部是True的时候才是True

print(1 and 2 and 3) # 3

同样也可以用or连接多个条件,此时会按照从左到右的顺序依次判断,一旦某一个条件为True,则无需再往右判断,可以立即判定最终结果就为True;只有在所有条件的结果都为False的情况下,最终结果才为False:

# 多个or

# 有一个是True就是True

print(1 or 0 or 2) # 1

# 全部是False的时候才是False

print(0 or 0 or 0) # 0

注意: 三者的优先级关系 not > and > or ,同一优先级默认从左往右计算。最好使用括号来区别优先级,其实意义与上面的一样。

逻辑运算的结果一旦可以确定,那么就以当前处计算到的值作为最终结果返回,这种现象叫做 短路运算:

# 因为or只要有一个为True就是True,因此当获取到1后不会在执行后面的

print(1 or 0 or 2) # 1

# 因为or只要有一个为False就是False,因此当获取到0后不会在执行后面的

print(0 and 1 and 2) # 0

成员运算符

成员运算符

描述

in

某个对象是否包含另一个对象,字符串、列表、元祖、集合和字典都支持

not in

某个对象是否不包含另一个对象

# 字符串

print('a' in 'Hello') # False

print('a' not in 'Hello') # Ture

# 字典 默认判断是的key

print('a' in {"name": "age"}) # False

print('a' not in {"name": "age"}) # True

# 集合

print('a' in {'a', 'b'}) # True

print('a' not in {'a', 'b'}) # False

# 列表

print('a' in ['a', 'b']) # True

print('a' not in ['a', 'b']) # False

# 元祖

print('a' in ('a', 'b')) # True

print('a' not in ('a', 'b')) # False

注意: 虽然两种判断可以达到相同的效果,但推荐使用not in,因为它的语义更加明确。

身份运算符

身份运算符

描述

is

某个对象是否包含另一个对象,字符串、列表、元祖、集合和字典都支持

is not

某个对象是否不包含另一个对象

x = "Hello World"

y = "Hello World"

z = x

print(x is y) # False

print(x is not y) # True

print(x is z) # True

print(x is not z) # False

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

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

相关文章

java wait()和sleep() 的区别

之前在写代码的时候&#xff0c;如果需要让线程等待一会&#xff0c;就直接使用sleep()方法&#xff0c;一直也没有出过问题。而wait()方法的出场率很高&#xff0c;每次打一个句点的时候&#xff0c;对象的方法弹出来&#xff0c;总是能看到wait()在其中&#xff0c;wait()是一…

异常:com.microsoft.sqlserver.jdbc.SQLServerException: 将截断字符串或二进制数据。

com.microsoft.sqlserver.jdbc.SQLServerException: 将截断字符串或二进制数据。 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:196) at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:246) a…

Java中的数据库架构导航

jOOQ的重要组成部分是数据库架构导航模块jooq-meta。 代码生成器使用它来发现相关的架构对象。 我多次被问到为什么我要自己滚动而不使用其他库&#xff0c;例如SchemaCrawler或SchemaSpy &#xff0c;确实很遗憾我不能依赖其他稳定的第三方产品。 以下是有关数据库架构导航的一…

python自动化测试的工具_python自动化测试(3)- 自动化框架及工具

3 基本示例如下示例也来自于官方文档 basic_demo.py&#xff1a;# coding:utf-8"""基本的自动化测试脚本 basic_demo.py"""__author__ zhengimport unittestclass TestStringMethods(unittest.TestCase):def setUp(self):print init by setUp…

Html转Word文档,解决无法保存网络图片的问题

最近项目中需要这个功能&#xff0c;网上有很多word转html的方法&#xff0c;但是html转word的方法很少&#xff0c;因为html中的图片转换到本地比较麻烦&#xff1b; 开始的时候只能转换不带图片的html内容&#xff0c;但是不符合要求&#xff0c;将html页面中的图片改成绝对路…

一不小心就掉大啦《数组使用注意》

今天程序提交答案总是不对&#xff0c;调试半天才发现本定义的是char s[4]{1,2,3,4} ; 程序运行过程中输出才发现多了一个字符 printf("%s\n"); //结果12349 思前想后觉得可能是没有字符数组结束符 (\0); 特别注意&#xff1a; 定义使用字符型数组时&#xff0c;应…

Java并发教程–阻塞队列

如第3部分所述&#xff0c;Java 1.5中引入的线程池提供了核心支持&#xff0c;该支持很快成为许多Java开发人员的最爱。 在内部&#xff0c;这些实现巧妙地利用了Java 1.5中引入的另一种并发功能-阻塞队列。 队列 首先&#xff0c;简要回顾一下什么是标准队列。 在计算机科学…

json和字符串/数组/集合的互相转换の神操作总结

一:前端字符串转JSON的4种方式 1&#xff0c;eval方式解析&#xff0c;恐怕这是最早的解析方式了。 function strToJson(str){var json eval(( str ));return json; } 2&#xff0c;new Function形式&#xff0c;比较怪异哦。 function strToJson(str){var json (new Funct…

python 修改array_python 基础_ 数组的 增删改查3

数组是运用在多个数据存在一个变量中的&#xff0c;而在调用的时候可以调用所需要的数组。创建数组a [a,b,c,d,f]   #创建一个数组a其中有5个元素分别是abcdf1.查询。所谓的查询就是显示变量a中一个或是一些元素print (a[1])  #打印出a变量中的序列1的元素&#xff0c;我们…

Android实现推送方式解决方案

Android实现推送方式解决方案 本文介绍在Android中实现推送方式的基础知识及相关解决方案。推送功能在手机开发中应用的场景是越来起来了&#xff0c;不说别的&#xff0c;就我们手机上的新闻客户端就时不j时的推送过来新的消息&#xff0c;很方便的阅读最新的新闻信息。这种推…

NYOJ 2 括号配对问题

括号配对问题 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;3描述 现在&#xff0c;有一行括号序列&#xff0c;请你检查这行括号是否配对。 输入第一行输入一个数N&#xff08;0<N<100&#xff09;,表示有N组测试数据。后面的…

您应该对什么进行单元测试? –测试技术3

昨天我在办公室里&#xff0c;和我的一位同事谈论测试&#xff0c;他对编写单元测试有些不服气。 他使用的原因之一是有些测试似乎毫无意义&#xff0c;这使我想到了什么是单元测试&#xff0c;什么也不需要打扰。 考虑下面一个简单的不可变的Name Bean&#xff0c;其中包含一…

java基础知识系列---垃圾收集

1 为什么要使用垃圾回收机制&#xff1f; “垃圾收集”暗示程序不再需要的对象就是垃圾&#xff0c;可以被丢弃。更精确&#xff0c;更新的说法是“内存回收”。 1.1 新对象的使用 当一个对象不再被程序所引用时&#xff0c;他所使用的堆空间可以被回收&#xff0c;以便于被后续…

经济

联合国&#xff0c;美苏英法中 国家要外汇储备干什么&#xff1f; 01年加入WTO &#xff0c;美国躲开 WTO 另起炉灶 TPP 诺贝尔经济学奖得主 克鲁格蛮 触动利益比触动灵魂还困难 SDR IMF 转载于:https://www.cnblogs.com/zrui513/p/5014593.html

wxpython的sizer_wxPython BoxSizer布局

Box wx.BoxSizer(wxHORIZONTAL) Box wx.BoxSizer(wxVERTICAL)Add() 方法(从wxSizer继承)它附加到sizer的下一行/列。Box.Add(control, proportion, flag, border)proportion 参数控制的控件响应于所述容器的尺寸改变其大小。各种flag 参数的组合决定控件在sizer的外观。下面是…

NYOJ 6 喷水装置(一)

喷水装置&#xff08;一&#xff09; 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB 难度&#xff1a;3描述 现有一块草坪&#xff0c;长为20米&#xff0c;宽为2米&#xff0c;要在横中心线上放置半径为Ri的喷水装置&#xff0c;每个喷水装置的效果都会让以它为…

如何部署Zabbix服务端

部署环境 RHEL 6.7 Zabbix-server 2.2.14 安装zabbix官方源 # wget http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm # rpm -ivh zabbix-release-2.2-1.el6.noarch.rpm 安装zabbix-server # yum install zabbix zabbix-server-mysql zab…

Google App Engine上的Spring MVC和REST

前段时间&#xff0c;我写了一篇关于如何使用Spring MVC实现Restful Web API的文章 。 阅读我以前的文章以了解它。 在那篇文章中&#xff0c;开发了一个简单的Rest示例。 为了测试该应用程序&#xff0c;将文件复制到Web服务器&#xff08;例如Tomcat &#xff09;中&#xff…

SALT+HASH撒盐加密

#region 撒盐加密string salt Guid.NewGuid().ToString();byte[] passwordAndSaltBytes System.Text.Encoding.UTF8.GetBytes(model.Password salt);byte[] hashBytes new System.Security.Cryptography.SHA256Managed().ComputeHash(passwordAndSaltBytes);string hashStr…

python 子串是否在字符串中_python七种方法判断字符串是否包含子串

1. 使用 in 和 not inin 和 not in 在 Python 中是很常用的关键字&#xff0c;我们将它们归类为 成员运算符。使用这两个成员运算符&#xff0c;可以很让我们很直观清晰的判断一个对象是否在另一个对象中&#xff0c;示例如下&#xff1a;>>> "llo" in &quo…