Day02-变量_数据类型和运算符

1 数据类型

不同类型的变量可以进行的运算是不同的,所以必须理解变量的类型,python中数据类型可以分为:

  • 内置类型

    • 数值类型:整型int,浮点型float,复数(complex) 3+5j

    • str:字符串

    • bool:布尔值【True,False】

    • None:空值,表示变量没有确定的值

    • list:列表

    • tuple:元组

    • dict:字典

    • set:集合

  • 自定义类型

    • class :类

1.1 基础类型

  • 数值类型:

    • 整型(int): python3中只有int一种,可以表示整数,例如:10,-5,10000

    • 浮点型(float): 表示带小数点的实数,有两种表示法:

      • 小数表示: 1.9 .23

      • 科学计数法: 用e来表示10的指数,1e2就代表了100,注意e前面必须有数值,e后面必须为整数

    • 复数(complex):表示数学上的无理数,形如:a+bj

  • 布尔型(bool):表示事务的两种状态,男女、阴晴、亮暗等,它只有两个值:True,False

  • None:表示空对象,一般用于判断,不同于0和空字符

  • 字符串(str):在python中,用引号(单引号、双引号、三引号)表示字符串

    • 字符串的表示

      # 用单引号表示: 'hello'
      # 用双引号表示:"我用python"
      # 用3个单引号表示:可以表示多行文本,例如:'''伟大的祖国'''
      # 用3个双引号表示:可以表示多行文本,例如:"""生死看淡,不服就干"""
    • 转义字符:有些特殊字符无法从键盘输入,可以使用转义字符表示,另外,无论是单引号、双引号还是三引号字符串,其中引号是字符串界定符,引号并不是字符串的内容,那么如何在单引号字符串中表示一个单引号呢,这也可以使用转义字符表示。常见的转义字符

      转义字符描述转义字符描述
      \'表示一个普通字符单引号\n换行
      \"表示一个普通字符双引号\r回车
      \'''一个普通的三单引号\\一个普通的字符\
      \"""一个普通的三双引号\a响铃
      \ttab键\b回删一个字符
    • 字符串编码:计算机只能识别二进制,那么字符串如何存储到计算机里呢

      计算机不能直接存储字符串,但我们可以将字符编码,例如用65表示大写字符A,66表示大写字符B....等这种表示方式就是美国类的ASCII码,只能表示127个字符,但对于美国人来说已经足够了。一但能用整数表示字符,我们可以很方便的把整数用二进制表示,那么字符串也就和容易存储到计算机了。
      但还有很多其他国家的语言是不能用ASCII表示的,所有ISO组织就推出了unicode码,用来表示任何一种语言的字符,unicode码也称之为万国码,通用码,可以表示任何一种语言的任何一个字符。unicdoe码有多中表示方式,例如:utf-8、utf-16、utf-32等。一般使用较多的是utf-8,utf-8是一种变长的编码,表示一个字符可能用一个字节,也可能是三个字节
      中文常用编码一般用GBK编码,用2个字节表示一个汉字

1.2 类型判断

我们可以使用type和isinstance来测试和判断数据类型

#type用法:type(obj)功能:返回obj的数据类型参数:obj是你要测试变量或数值示例:age = 10name = 'hello'print(type(name),type(age))#判断变量是否是指定类型if type(age) is int:print('是')else:print('否')
​
#isinstance用法:isinstance(obj,typename)功能:判断obj是否是指定类型,是返回True,否返回False参数: objobj是你要判断的变量或数值typename是指定数据类型,可以是int,float,str等。也可是一个类型的元组,例如:(int,float)示例:age = 10name = 'hello'  print(isinstance(age,int))print(isinstance(name,(str,int)) #只要name是str或int的一种就返回Trueif isinstance(age,int):print('是')else:print('否')#type和isinstance的区别
type判断基本类型是没问题的,但无法判断子类对象是父类的一种
isinstance可以判断子类对象是父类的一种
class A:pass
​
class B(A):pass
​
objA = A()
objB = B()
​
#输出否
if type(objB) is A:print('是')
else:print('否')print(isinstance(objB,A))  #True

结论:优先使用isinstance

2. 运算符和表达式

在数学上为了计算结果,我们会写一些式子计算,例如:

30 + 5

这是数学中的计算式,python中为了计算也有类似的式子,叫表达式。在表达式中30和5称作操作数,+称之运算符。表达式的目的在于计算结果。表达式构成:

  • 最基本的表达式就是一些数值,变量、函数,例如: 3, a(变量) print('hello')

  • 由基本表达式加上适当的运算符构成复杂的表达式: 3 + a

综合上述,所谓表达式就是由操作数和运算符组成䄦符合python语法的式子。要写表达式首先要学习运算符。关于运算符要知道两件事情

  • 计算顺序 : 是从左向右算还是从右向左算

  • 优先级 : 比如先乘除后加减

###2.1 算术运算符

a = 20

b = 10

运算符说明示例
-负号,取原数的相反数a = 10 print(-a) #-10
+ - * /加减乘除,同数学上一样a + b = 30 a - b = 10 a * b = 200 a / b = 2
%模运算,即求 a整除以b的余数a % 10 = 0
//整除a // b = 2
**对运算符进行指数(幂)计算a ** b 表示20的10次方

####模运算说明

  • 模运算的符号取决于第二个操作数(右操作数)

  • 模运算的计算公式:r = a % b = a - n * b,其中n是小于a/b的最大整数

  • 整除(//)运算如果有一个操作数是浮点数,结果是浮点数

  • 用途:判断奇偶、判断是否能够整除、最大公约数、水仙花数

数学函数

函数名函数的说明示例
abs取绝对值abs(-10)
pow(x,y)x的y次方pow(10,2)求10的平方
round(x,[n])浮点数的4舍5入, n代表保留小数的位数round(3.456)
max()求给定参数的最大值max(21,43,65,75,86,32,3,45)
min()求给定参数的最小值min(21,43,65,75,86,32,3,45)
math.ceil()需要导入import math库 向上取整math.ceil(18.1) #19
math.floor()需要导入import math库 向下取整math.floor(18.1) #18
math.sqrt需要导入import math库 求平方根math.sqrt(100)

python3.5.2中文帮助文档 https://yiyibooks.cn/xx/python_352/index.html

随机函数

获取随机数,需要引入random库。

import random

函数名函数说明
random.randrange(start,stop,step)start 指定范围的起始值 包含本身,默认是0;stop 指定范围的结束值 不包含本身; step 步长,默认步长是1。该函数返回一个整数
random.randint(start,end)返回[start end]之间的一个随机整数,start必须小于end
random.random()返回一个[0.0,1.0)之间的随机小数

注意

  • 优先级: ** >正负号 > // % * / > + -

  • 从左向右算

  • 在幂运算和一元运算符联合计算时,从右向左算,例如: -1 ** 2 = -1

2.2 赋值运算符

a = 5; b = 10; c = 20

运算符说明示例
=简单赋值, 将b+c的结果赋给aa = b +c #a=30
+=a += b等价于 a = a +ba = 15
-=a -= b等价于 a = a - ba = -5
*=a *= b等价于 a = a * ba = 50
/=a /= b 等价于a = a / ba = 0.5
%=a %= b等价于a = a % ba = 5
//=a //= b等价于 a = a // ba = 0
**=a **= b等价于a = a ** b 

注意:

  • 赋值运算符左边必须是变量

  • 从右向左算

  • 没有赋值表达式

  • 所有赋值运算符优先级相同,赋值运算符优先级非常低,仅高于成员运算符和身份运算符、逻辑运算符

  • 注意在复合赋值中

a = 2
b = 3
a *= b + 2  #等价于 a = a * (b + 2)
print(a)  # a = 10

2.3 关系运算

关系运算就是比较运算,如果表达式成立,返回True,否则返回False。关系运算的结果是布尔值。

运算符示例说明
==a == ba和b值相等,结果是True,a和b值不相等结果为False
!=a != ba不等于b 结果为True,否则结果为True
>a > ba大于b结果为True,否则为False
>=a >= ba大于等于b结果为True,否则为False
<a < ba小于b结果为True,否则为False
<=a <= ba小于等于b结果为True,否则为False

注意:

  • 优先级: 比较运算符优先级相同

  • 从左向右算

  • 可以这样算:1 < a < 3 等价于 a > 1 and a < 3

2.4 逻辑运算

逻辑运算符可以用于构造复杂条件。逻辑运算符包括:

  • 逻辑与 and 对应汉语的意思是“并且” 、 “同时”

  • 逻辑或 or 对应汉语意思为"或者"

  • 逻辑非 not 对应汉语意思为”相反“

在逻辑运算中,False、None、0、0.0、‘’(空字符串)被看做假(False),其它的看做真(True)

2.4.1 逻辑与

aba and b
任意值b的值
任意值a的值
  • 表达式 a and b的值为: 如果a为真,结果为b的值,否则结果是a的值

2.4.2 逻辑或

aba or b
任意值a的值
任意值b的值
  • 表达式a or b的值为:如果a为真结果为a的值,否则结果是b的值

2.4.3 逻辑非

anot a
False
True

小结:a为真则表达式为False,否则表达式为True

2.4 短路计算

  • 对于逻辑与表达式 a and b,如果a为假,则不计算b

  • 对于逻辑或表达式 a or b ,如果a为真,则不计算b

2.4.5 注意事项

  • 优先级 not > and >or

2.5 身份运算符

is: 判断两个标识符是否引用自同一个实体【对象】,比较的是两个对象的id是否一样,如果相同为真,否则为假

is not:判断两个标识符是不是引用自不同的实体【对象】如果两个对象的id不同结果为真,否则为假

id()函数获取实体的id(地址)

注意:is和==的区别

  • is用于判断两个变量引用实体是否为同一个【id】

  • ==用于判断两个变量的值是否相同,但id不一定相同

2.6 成员运算符

主要应用在序列中

in:如果在指定的序列中找到指定的值,则返回True,否则返回False

not in:如果在指定的序列中未找到指定的值,则返回True,否则返回False

2.7 if-else表达式

表达式1 if 条件 else 表达式2

如果条件为真假结果是表达式1的值,否则结果是表达式2的值

 

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

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

相关文章

css hack

http://blog.csdn.net/swallowliyan/article/details/50803469转载于:https://www.cnblogs.com/annie211/p/5934035.html

java从哪学到哪_Java JVM怎么学习啊?从哪方面入手?

叮当猫咪一、 JVM的生命周期  1. JVM实例对应了一个独立运行的java程序它是进程级别  a) 启动。启动一个Java程序时&#xff0c;一个JVM实例就产生了&#xff0c;任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例运行的起点  b) 运行。m…

JMeter处理Cookie与Session

cookie 和session 的区别&#xff1a; 1、cookie数据存放在客户的浏览器上&#xff0c;session数据放在服务器上。 2、cookie不是很安全&#xff0c;别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session。 3、session会在一定时间内保存在服务器上。当…

Maximum sum(poj 2479)

题意&#xff1a;给一段数列&#xff0c;将这个数列分成两部分&#xff0c;使两部分的最大子段和的和最大&#xff0c;输出和/*看数据没想到是(O)n的算法&#xff0c;求出从前向后的最大子段和和从后向前的最大子段和&#xff0c;然后枚举断点。 第一次提交不小心折在数组最小值…

java futuretask 实例_java 使用Callable+FutureTask获取执行结果

之前给大家分享了使用CallableFuture获取执行结果的java示例&#xff0c;那么下面要给大家分享的就是使用CallableFutureTask获取执行结果的java示例&#xff0c;一起来看看吧。public class Test{public static void main(String[] args){//方式1ExecutorService executor Ex…

Day03-运算符和表达式

运算符和表达式​ 1. 运算符的优先级 尽量不要把一个表达式写的过于复杂&#xff0c;如果遇到复杂的需求&#xff0c;则最好分步运算 不要过多的依赖于运算符的优先级&#xff0c;否则代码的可读性太差&#xff0c;在实际的项目开发中&#xff0c;一般采用&#xff08;&#…

Eclipse中字母大小写转换快捷键

ctrlshiftx 转为大写 ctrlshifty 转为小写 转载于:https://www.cnblogs.com/stsinghua/p/6418636.html

dedecms代码研究六

今天讲的是dedecms最关键的东西&#xff0c;模板分析啦。也就是dedetag.class.php 里面的ParseTemplet方法 模板解析方法 先看看一个dedecms标签,大家心里有个数&#xff1a; {dede:arclist row10 orderbypubdate typeimage. imgwidth143 imgheight106} <li><a href&q…

Django-session的存放位置

django-session 存放位置 设置session的保存位置&#xff0c;有三种方法&#xff1a; 保存在关系数据库(db)保存在缓存数据库(cache) 或者 关系缓存数据库(cache_db) 保存在文件系统中(file) 第一种 保存在数据库中&#xff1a;需要在 INSTALL_APPS 中添加&#xff1a;djan…

允许多域名跨域 php,PHP设置多域名允许跨域访问

针对 PHP 语言设置多域名允许跨域访问服务器变量&#xff1a;服务器变量存储在 $_SERVER 数组中&#xff0c;在这个数组中有一个特殊的键值&#xff1a;HTTP_ORIGIN。这个键只在跨域的时候才会存在值&#xff0c;同源时为空字符串响应头设置允许某域名访问&#xff1a;access-c…

蚂蚁分类信息系统 5.8 信息浏览量后台自定义设置

mymps 蚂蚁分类信息是一款基于PHPMySQL的建站系统,为在各种服务器上架设分类信息以及地方门户网站提供完美的解决方案. mymps5.8 下载 蚂蚁分类系统 5.8下载 蚂蚁分类系统下载 mymps下载 蚂蚁分类信息系统 5.8 原信息浏览量后台无法自定义&#xff0c;现增加后台自定义浏览量…

MS SQL-Server快捷键

快捷键 功能 CtrlShiftB 生成解决方案 CtrlF7 生成编译 CtrlO 打开文件 CtrlShiftC 显示类视图窗口 CtrlShiftO 打开项目 F4 显示属性窗口 ShiftF4 …

python编写四位数验证码

def verifycode(request):#引入绘图模块from PIL import Image, ImageDraw, ImageFont#引入随机函数模块import random#定义变量&#xff0c;用于画面的背景色、宽、高bgcolor (random.randrange(20, 100), random.randrange(20, 100), random.randrange(20, 100))width 100h…

php 计算数据偏离度,关于偏离度的测算方法

2015年6月技术总结——关于偏离度的测算方法研究院公用事业部 路璐引言《原理》中说“偏离度是指每一种偿债来源与财富创造能力的距离&#xff0c;所体现的是偿债来源对债务安全的保障程度&#xff0c;唯有通过揭示偿债来源与财富创造能力偏离度才能真正区别每一种偿债来源的风…

Django中celery配置总结

情景&#xff1a; 用户发起request&#xff0c;并等待response返回。在本些views中&#xff0c;可能需要执行一段耗时的程序&#xff0c;那么用户就会等待很长时间&#xff0c; 造成不好的用户体验&#xff0c;比如发送邮件、手机验证码等。 使用celery后&#xff0c;情况就不…

AngularJs ng-repeat限制循环次数

重复数组&#xff1a;<ul ng-initname[1,2,3,3]><li ng-repeat"name in name track by $index">{{name}}</li> </ul> 对象&#xff1a; <ul ng-initobj{ a:"aaa", b:"bbb", c:"ccc" }><li ng-repeat…

qml demo分析(customgeometry-贝塞尔曲线)

一、效果展示 本篇文章还是带来一个简单的qt示例分析&#xff0c;且看图1效果。 图1 贝塞尔曲线 二、源码分析 该示例代码所在目录quick\scenegraph\customgeometry&#xff0c;感兴趣的同学可以自己去找&#xff0c;这篇文章我还是主要讲解源码&#xff0c;不涉及其他方面。 废…

php 打包上传的文件,PHP单文件上传原理及上传函数的打包

PHP单文件上传原理及上传函数的封装服务器(临时文件)——>指定目录,当文件进入服务器时它就是临时文件了,这时操作中要用临时文件的名称tmp_name。//在客户端设置上传文件的限制(文件类型和大小)是不安全的&#xff0c;因为客户能通过源代码修改限制&#xff0c;所以在服务端…

celery AttributeError: 'str' object has no attribute 'items'

AttributeError: str object has no attribute items python manage.py celery worker --loglevelinfo 查了好久发现原来是因为以前下的redis版本过高&#xff08; 3.0.1 &#xff09;&#xff0c;重装redis pip install redis2.10.6

equals和==的区别(转)

基本数据类型&#xff0c;也称原始数据类型。byte,short,char,int,long,float,double,boolean&#xff0c;他们之间的比较&#xff0c;应用双等号&#xff08;&#xff09;,比较的是他们的值。 复合数据类型(类) 当他们用&#xff08;&#xff09;进行比较的时候&#xff0c;…