基本变量类型与运算符
来源:互联网 发布:华为盒子无法连接网络 编辑:程序博客网 时间:2024/05/21 08:01
- 基本变量类型
- - 数字
- -整数
- - 浮点数
- - 复数
- - 数字相关的函数
- - 布尔值
- - 字符串
- 转义字符
- 字符串占位符
- 字符编码转换
- 用于字符串的函数
- 字符串方法
- 字符串处理和转换
- 查询判断和统计
- 字符串应用
- - 数字
- 运算符
- 算术运算符
- 赋值运算符
- 比较运算符
- 位运算符
- 逻辑运算符
- 成员运算符
- 身份运算符
- 基本变量类型
基本变量类型
Python的变量本身没有类型,通常说类型指的是变量对应的对象类型。这种特性的语言称之为动态语言,区别于变量必须指定类型且不能存入其他类型数据的静态语言。
Python能处理的对象类型包括数字、布尔值、字符串、列表、元组、字典和集合等。其中前三种为基本变量类型,后四种为集合类变量,由基本变量组成。
- 数字
数字类型变量用于存储数据,包括整形int、浮点float和复数comlex。
-整数
Python可以存储计算任意大小的整数,包括正负和0。同时也可以用前缀0x表示十六进制数、前缀0o表示八进制。
- 浮点数
Python中浮点数可以使用小数形式如1.23
和科学计数法如1.23e5
、1.23e-3
的形式表示。
- 复数
Python中复数由实部和虚部两个浮点数组成,用a+bj或complex(a,b)表示。
- 数字相关的函数
- int(x),将x转换为整数,舍弃小数部分;
- float(x),将x转换为浮点数;
- complex(x),将x转换为复数,实部为x,虚部为0;
- complex(x,y),将x转换为复数,实部为x,虚部为y。
- abs(x),返回x的绝对值
- round(x,n),返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数,n为负则舍入到小数点前。
- 除了基本数字函数外,可以加载数学函数库,使用更多函数进行数学计算。
import math
通过此语句可以加载数学函数库,使用数学常量和数学函数方便进行数学计算。
- 布尔值
True和False。在很多计算和判断中,非0值和True是等价的,0和False是等价的。
- 字符串
使用’单引号’”双引号”包裹的内容为字符串。
转义字符
当字符串内需要包括如\、#、’、”、换行、制表符等特殊符号时,需要在前面加反斜杠\进行转义。
如:
>>> print("Hello,\tworld!\n\\")Hello, world!\
当不需要进行转义而是要正常显示引号内的所有内容的话,只需要在字符串前加一个r即可。如:
>>> print(r"Hello,\tworld!\n\\")Hello,\tworld!\n\\
如果如要用多行文字来表示字符串时,字符串前加上三个单引号”’标记,即可进行多行输入,命令行模式下输入的提示会从>>>变为…。输入完成后,再次使用”’标记结束输入。如:
>>> print('''abcdefghi''')
输出:
abcdefghi
字符串占位符
通过占位符以及占位符格式化,可以控制在字符串中按指定格式加入数字,输出格式化的字符串。例如话费短信:“尊敬的用户,截至x月x日您的话费还剩xx.xx元。”
在字符串中插入相应的占位符,在字符串后加上%变量的内容
,有几个占位符就加几个变量,多个变量使用%(var1,var2,...)
的形式。
字符串中出现%又要使用占位符时,使用%%进行转义。
占位符的表达式:
%[[flags][width].[precision]typecode
其中:
flags 位可供选择的值有:
- + 正数前加正号,负数前加负号;
- - 正数前无符号,负数前加负号;
- 空格 正数前加空格;
- 0 正数前用0填充;
width表示flag位中空格或0的位数;
.precision 小数点后保留的位数;
typecode必填,为占位符的类型,通常包括下列几种类型
下面是一些占位符的使用例子:
# %+'0:补0;无:补空'+'补0或补空的位数'+占位符类型>>> print('%02d-%2d' % (3, 1))03- 1>>> print('%.2f%%'% 31.3412)31.34%>>> print('0x%x'% 1231)0x4cf>>> print('%.3g'% 13949900)1.39e+07
字符编码转换
使用ord()
函数可以获得一个字符的十进制整数编码,使用chr()
函数可以将一个十进制整数编码转换为字符。
字符也可以直接写作\u+十六进制编码
的形式。
Python使用的是Unicode编码,程序在内存中以Unicode编码运行,此时字符串类型为str
,但是当程序存储到磁盘或进行网络传输时,需要以字节段形式保存,字符串类型需要转换为bytes
。bytes
类型的字符串在Python中以b'字符串'
的形式表示。两者间的转换需要使用encode和decode方法进行转换。
>>> str1='一条字符串'>>> str2=(str1.encode('utf-8')) #指定编码方式为utf-8>>> str2b'\xe4\xb8\x80\xe6\x9d\xa1\xe5\xad\x97\xe7\xac\xa6\xe4\xb8\xb2'>>> print(str2.decode('utf-8')) #指定解码方式为utf-8一条字符串
用于字符串的函数
len()
,长度函数,对str字符串返回字符数,对bytes字符串返回字节数。
>>> len(str1) #以上面的字符串为例5>>> len(str2)15 #在unicode中一个中文汉字占用三个字节,因此字节数为15。
max()
,最大值函数,返回字符串中对应整数最大的字符。
>>> str='AaBbCc'>>> max(str)'c'
字符串方法
字符串方法是属于字符串类型变量对象的内建函数,使用时需先指定对象,形如: 字符串.方法名(参数)
。
字符串处理和转换
capitalize()
首字母转换为大写,返回。
>>> str3='string'>>> str3.capitalize()'String'
lower()
将字符串转换成小写,使用英文字母。另有casefold()
适用于unicode中的其他区分大小写的字符。upper()
将字符串转换成大写。swapcase()
将字符串大小写调转。title()
将字符串转换为标题格式,即每个单词首字母大写,其余小写。center(width,fillchar)
字符串转换为长度为width、居中、两侧用指定单个字符填充的字符串,返回。
>>> str3='string'>>> str3.center(10,'.')'..string..'
strip()、lstrip()
和rstrip()
截掉字符串左右两侧、左侧和右侧的空格或指定字符,返回截取后的剩余字符串。参数中填入截掉的字符串,不填则截掉空格。
-ljust(width,fillchar)、rjust(width,fillchar)
对字符串进行左对齐或右对齐操作,将字符串用fillchar字符填充至长度为width,不给出fillchar参数时用空格进行填充,返回对齐后的新字符串。
>>> str3='string'>>> str3.rjust(10)' string'>>> str3.ljust(10,'*')'string****'
replace(new,old,maxtimes)
对字符串进行替换操作,使用new字符串替换掉字符串中的old字符串,可以指定maxtimes限制替换的次数,如不给出参数则全部替换。
>>> str4='language'>>> str4.replace('a','e')'lenguege'>>> str4.replace('a','e',1)'lenguage'
maketrans(old,new)
创建字符串映射表,一般搭配translate使用,以进行字符串的替换。输入参数为两个字符串,分别是待替换的字符组成的字符串以及映射目标组成的字符串,两个字符串数量必须相等,根据映射关系一一对应。该方法的返回值为一个包含字符值映射关系的字典。一个字符串创建的映射表可以用于任意同类型的字符串,也可以直接使用str.maketrans()、bytearray.maketrans()或bytes.maketrans()创建对应类型的字符串。translate(transtable)
以maketrans创建的映射表为参数,也可以是手动指定的字典变量。
>>> str5='python'>>> custable={116:84} #t和T的ascii>>> table=str5.maketrans('pn','PN')>>> table{112: 80, 110: 78} >>> str5.translate(table)'PythoN'>>> str5.translate(custable)'pyThon'
splitlines(keepends)
将字符串按\r和\n自动分割为多个字符串组成的列表,可以输入参数True使每个字符保留\n和\r,默认为False。
>>> str7='''NIHILDOGMARAGE'''>>> str7.splitlines()['NIHIL', 'DOGMA', 'RAGE']>>> str7.splitlines(True)['NIHIL\n', 'DOGMA\n', 'RAGE']
查询、判断和统计
count(str, beg=0,end=len(stringname))
字符计数,返回str在整个字符串中出现的次数。
>>> str3='string'>>> str3.count('tr')1>>> str3.count('tr',0,6) #第0~(6-1)位中查找'tr'1>>> str3.count('tr',2,len(str3)) #第2位~字符串末尾查找'tr'0
find(str, beg=0,end=len(stringname))
字符查找,返回找到的第一个str在字符串中的位置,未找到则返回-1。rfind()
的功能与find()
相同,但在执行时从右往左查找。- 此外还有
index()
和rindex()
方法,功能和用法与find基本相同,但无结果时不返回-1而是报错。
>>> str3='string'>>> str3.find('tr')1>>> str3.find('tr',2,5)-1>>> str3.find('tr',0,len(str3))1
如果有多个匹配值,find方法和index方法也只会返回找到的第一个位置。尝试写了下面这段小程序在字符串中查找出所有匹配值位置:
string='q1w1e1r1t1yuio1p' #一长串夹杂'1'的字符串,找出'1'的位置position_of_1=[] #使用一个列表来记录位置flag=0 #记录每次查找的结果length=len(string)while (string.find('1',flag,length)!=-1): #从上次记录的匹配位置后开始查找直至无结果 flag=string.find('1',flag,length) position_of_1.append(flag) #记录位置 flag+=1 #下次查找从此次结果的后一位开始,否则会死循环print(position_of_1)
执行结果
>>> ==================== RESTART: C:/Users/l1z/Desktop/11.py ====================[1, 3, 5, 7, 9, 14]
endswith(str, beg=0,end=len(stringname))
结束位判断,判断字符串的结尾是否为指定字符串str,返回布尔值。
>>> str3='string'>>> str3.endswith('g')True>>> str3.endswith('g',0,5)False>>> str3.endswith('n',0,5)True
stratswith(str, beg=0,end=len(stringname))
起始位判断,和结束位判断的用法相同。is系列方法,判断字符串的组成形式的方法,当字符串中至少有一个字符且满足特定条件时返回True,否则返回false,具体条件如下表。
写了下面这段代码,通过执行结果可以了解isdigit、isnumeric和isdecimal对数字字符的判断差别。
# coding:utf-8decimal=[]digit=[]numeric=[] #定义存储字符的列表for x in range(0,2**16): #遍历Unicode从0到2的16次方的所有字符 s=chr(x) if s.isdecimal(): decimal.append(s) #将满足三种判断结果的字符写入到各自的列表中 if s.isdigit(): digit.append(s) if s.isnumeric(): numeric.append(s)print('Decimal:',decimal) #查看结果print('Digit:',digit)print('Numeric:',numeric)
字符串应用
join(seq)
用字符串为间隔,将序列seq拼接成一个长序列,返回这一长序列。
>>> seq=['H','e','l','l','o','!']>>> str=','>>> str.join(seq)'H,e,l,l,o,!'
运算符
Python的基本运算和其他语言类似,分为赋值运算、算术运算、比较运算、身份运算、成员运算、逻辑运算和位运算。
算术运算符
赋值运算符
赋值运算符为=。
算术运算符后跟随赋值运算符可以构成相应的赋值运算符,如a+=b等价于a=a+b。
比较运算符
位运算符
位运算符将变量作为二进制数进行操作,逐位计算。
>>> a=0b01011010 #90>>> b=0b10001101 #141>>> a&b8 #00001000>>> a|b223 #11011111>>> a^b215 #11010111>>> ~a-91 #10100101作为补码>>> a>>222 #00010110>>> a<<2360 #0101101000
逻辑运算符
逻辑运算符包括两个布尔值的与:and
或:or
运算和单个布尔值的非(not)运算。其逻辑如下,注意这里运算数x和y均可不是布尔值,若不是布尔值,除0外均看作True:
成员运算符
成员运算符,判断元素是否在指定字符串,列表或元组中。
身份运算符
is
和not is
是两个身份运算符,用来判断两个标识符是不是引用自同一个对象。
- 基本变量类型与运算符
- 变量,基本类型,java运算符
- JavaScript——1(基本语法,类型,变量与运算符,控制流程,函数)
- c# 变量、运算符与类型转换
- 变量与基本类型
- Groovy1-基本类型与运算符
- 变量、JAVA基本类型 、 运算符和表达式的学习
- 变量、JAVA基本类型、运算符和表达式-1
- C++变量与基本类型
- java 基础知识二 基本类型与运算符
- Java 基础 1.基本类型与运算符
- 变量与运算符
- Java基本类型变量与引用类型变量
- Java基本类型变量与引用类型变量
- 【Java基础】基本类型与运算
- java——(常量、变量、基本类型、进制、运算符)总结
- java基础学习——变量,java基本类型,运算符和表达式
- java基础学习——变量,java基本类型,运算符和表达式笔试题
- spring mvc
- 分区表中主键索引是该是全局还是分区索引?
- oracle的分区表、分区索引和全局索引部分总结
- Oracle分区索引
- Python语言程序设计 前言
- 基本变量类型与运算符
- 关于分页语句的性能优化
- ODBC配置dsn
- [LC]202. happy numbers
- MySQL常用语句
- android 详解Handler内部源码机制
- Logistic 多分类
- 赵老师提供的TRACE格式化函数
- Leetcode 刷题之数组类