Python数据类型和表达式
标识符(Identifier)
‣由程序员定义的名字;
‣ 允许采用大写字母、小写字母、数字、下划线(_)和汉字等字 符,但标识符的首字符不能是数字,中间不能出现空格;
‣大小写敏感;
‣ 不能与保留字相同;
‣允许使用汉字标识符,但我们不建议这么做。
‣ 五个不同的合法标识符:
Python_3_7, python_你好, _python_ABC
Python_3、python_3、PYTHON_3、PyThOn_3、pYtHoN_3
保留字(Keyword)
‣编程语言内部定义并保留使用的标识符。
变量
‣表示(或指向)特定值的标识符;
‣ 不需要事先声明(这一点和C语言很不一样),变量的赋值操作即 是变量的声明和定义的过程;
x=5
‣赋值语句并不返回值(与C语言不同),因此下边这条语句是不合法的;
x = (y = y +1)
‣ 支持多重赋值,比如:
x = y = z = 5
‣支持多个变量同时赋值,或者叫元组赋值
x , y , z = 5 , 10 , 15
变量同时赋值
a , b , c = 1, 1.5, 'a'
a、b、c的类型分别是什么?
运行下面的代码
a , b , c = 1, 1.5, 'a'
print (type(a))
print (type(b))
print (type(c))
a , b = b , a
print (type(a))
print (type(b))
可以看到输出如下, 要时刻记住python变量的赋值操作即 是变量的声明和定义的过程;
<class 'int'>
<class 'float'>
<class 'str'>
<class 'float'>
<class 'int'>
常量
‣在程序执行过程中不能改变的数据,比如
5,"abc"
‣ 没有命名常量,所以不能像C语言那样给常量起一个名字。
基本数据类型
布尔型:
‣表示及运算与布尔代数完全一致; 只有True、False两种值。
数值类型:
(1)整型:
‣有“无穷”精度;
‣ 可以使用多种进制。
(2)浮点型
‣ 所有浮点数必须带有小数部分,小数部分可以是0;
‣ 十进制表示和科学计数法表示; ‣ 数值范围存在限制,小数精度也存在限制;
‣ 2个浮点数一般不可以直接比较相等。
(3)复数类型
‣数学中的复数概念一致;
‣ 由实数部分和虚数部分构成;
‣复数的虚数部分通过后缀”J”或”j”来表示;
‣ 实部和虚部的数值都是浮点型;
‣对于复数z,可以通过z.real和z.imag分别获得它的实数部分和虚 数部分。
字符串:
‣以单引号或双引号或三个引号括起来的任意文本;
‣ 用\做转义字符;用r前缀表示不转义
‣本质上是一个字符序列,支持双向索引。
常用的转义符:
字符串操作:
可以通过+或*进行连接。
>>> "Hello" + "World"
'HelloWorld'
>>> "Hello" * 3
'HelloHelloHello'
‣支持“切片”操作,切片的基本格式为:
<string>[<start>:<end>]
例如
>>> a='HelloWorld'
>>>a[2:5]
'llo'
‣字符串属于不可变序列类型,也就是说不允许通过索引改变字 符串的值,如:s[3] = “H“ #错误的用法
‣ 可以通过+或replace函数。
s=s[:6] + ‘BUPT'
例如
>>> s='HelloWorld'
>>> s=s[:6] + 'BUPT'
>>> s
'HelloWBUPT'
>>> s=s.replace('o','O')
>>> s
'HellOWBUPT'
字符串的格式化:
‣使用字符串格式运算符(%);(不再改进)
‣ 使用字符串的format方法;
‣ f-string ,Formatted String Literals。(推荐)
‣format方法的基本用法:string.format(arg1,arg2…)
>>> "{}是一种程序设计语言,它目前的版本是{}".format("Python",3.7)
'Python是一种程序设计语言,它目前的版本是3.7'
{:格式控制标记}.format(string)
‣格式控制标记的基本格式:
[[填充]对齐] [符号][#][0][宽度][分隔符][.精度][类型]
空值:
‣只有一个值就是None;
‣ 不支持任何运算,没有任何内置方法,也没什么有用的属性, 它的布尔值总是False
常用数据类型的转换:
‣不同数据类型进行混合运算时会隐式的进行数据类型的转换;
‣ 转换的原则为将所有的数据类型统一到最“大”的类型;
‣常用的数据类型转换函数:
bin()、oct()、hex()用来将整数转换为二进制、八进制 和十六进制形式。
bin()、oct()、hex()用来将整数转换为二进制、八进制 和十六进制形式
str()用来将其任意类型参数转换为字符串
运算符及表达式
算术运算符:
‣加法运算及乘法运算还可以用于字符串类型;
‣ 幂运算支持复数、实数及整数;
‣除法运算是数学意义上的除法,运算结果为浮点数;
‣ 整除运算可以用于实数和整数;
‣取余运算可用于实数和整数。
逻辑运算符:
‣ and、or、not分别代表与运算、或运算、非运算;
‣ and和or具有惰性求值或叫逻辑短路的特点;
‣ and和or并不一定会返回True或False,而是得到最后一个被计算 的表达式的值;运算符not一定会返回True或False。
‣ and和or具有惰性求值或叫逻辑短路的特点
示例:求a和b 中的较大者,赋值给c
下面5种写法的结果是一样的
#写法1
a, b, c = 1, 2, 3
if a>b:
c = a
else:
c = b
print("写法1 c=",c)
a, b, c = 1, 2, 3
c = a if a>b else b
print("写法2 c=",c)
#写法3
a, b, c = 1, 2, 3
c= [b, a][a > b]
print("写法3 c=",c)
#写法4
a, b, c = 1, 2, 3
c = (a>b and a or b)
print("写法4 c=",c)
#写法5
a, b, c = 1, 2, 3
c = (a>b and [a] or [b])[0]
print("写法5 c=",c)
输出结果为
写法1 c= 2
写法2 c= 2
写法3 c= 2
写法4 c= 2
写法5 c= 2
赋值运算符:
‣ ”=”是主要的赋值运算符;
‣ 增强赋值运算符:+=、-+、*=、**=、/=、//=、%=。
如果用op表示算术运算符,则下面两个赋值操作是等价的:
x op= y
x = x op y
运算符的优先级:
基本输入/输出
input():
‣接收任意输入,返回字符串类型;
‣ 在获得用户输入之前可以包含一些提示性文字;
x = input("请输入:")
print():
‣语法格式为:
print(*objects, sep=’ ’, end=’\n’, file=sys.stdout, flush=False)
‣ objects为需要输出的内容;sep用于指定数据之间的分隔符; end用于指定输出的结尾;file用于指定输出位置;flush确定输 出是否使用缓存。
‣结合字符串的格式化可以得到各种格式化的输出。
a,b,c=1,2,3
print(a,b,c,sep='#')
输出为
1#2#3
本文结束。。。。