Python其实很简单第五章基本数据类型
编程的目的就是为了处理信息,信息则是由各种不同类型的数据表示的,对数据的进一步处理也会使信息更加丰富和有效。
5.1变量
前面已经提到过"变量"这属语,下面再进一步解释一下。
在程序运行时,必须把数据导入计算机的存储单元中,但存储单元的命名是用二进制数表示的,晦涩难懂。为了方便起见,可以给存储单元起上一个通俗易懂的名字,即变量名。
变量的生命周期和程序的运行周期是相同的,一个程序运行解释,所占用的存储空间也就随之释放,用变量名表示的数据所占用的这个存储单元也就空闲了。
变量名的命名规则:
由字母、数字、下划线构成,必须由字母开头。
不能包含-、*、?、#、<、>、;、/、、@、%、$、空格等特殊字符。
最好使用有含义的英文单词或汉语拼音。
最好采用小写字母。
不能使用保留字(已被Python语言系统本身赋予特定意义的单词)。Python的保留字如下表所示。
Python保留字列表
序号
保留字
说明
1
and
逻辑与操作,用于表达式运算
2
as
用于转换数据类型
3
assert
用于判断变量或条件表达式的结果
4
async
用于启用异步操作
5
await
用于异步操作中等待协程返回
6
break
中断循环语句的执行
7
class
定义类
8
continue
继续执行下一次循环
9
def
定义函数或方法
10
del
删除变量或序列的值
11
elif
条件语句,与 if、else 结合使用
12
else
条件语句,与 if、else 结合使用;也可用于异常或循环语句
13
except
包含捕获异常后的处理代码块,与 try、finally 结合使用
14
FALSE
含义为"假"的逻辑值
15
finally
包含捕获异常后的始终要调用的代码块,与 try、except 结合使用
16
for
循环语句
17
from
用于导入模块,与 import 结合使用
18
global
用于在函数或其他局部作用域中使用全局变量
19
if
条件语句,与 elif、else 结合使用
20
import
导入模块,与 from 结合使用
21
in
判断变量是否在序列中
22
is
判断变量是否为某个类的实例
23
lambda
定义匿名函数
24
None
表示一个空对象或是一个特殊的空值
25
nonlocal
用于在函数或其他作用域中使用外层(非全局)变量
26
not
逻辑非操作,用于表达式运算
27
or
逻辑或操作,用于表达式运算
28
pass
空的类、方法或函数的占位符
29
raise
用于抛出异常
30
return
从函数返回计算结果
31
TRUE
含义为"真"的逻辑值
32
try
测试执行可能出现异常的代码,与 except, finally 结合使用
33
while
循环语句
34
with
简化 Python 的语句
35
yield
从函数依次返回值
Python是区分大小写的,虽然可以将一个英文单词通过字母大小写不同而作为不同变量的变量名,但从程序可读性的角度看,的确不可取。
Python是一种动态类型的语言,变量的类型由变量的值决定。换而言之,给变量赋何种类型的值,变量就是该值的类型。给变量赋值可以通过赋值号(=)来实现。如:
>>> myvar=100
>>> type(myvar)
>>> myvar="tom"
>>> type(myvar)
在这个例子中,变量myvar首先赋值为100,显而易见,100是个整数,通过type()这个函数检测,变量myvar的类型为整数类型(int);接下来变量myvar赋值为‘tom’,通过type()这个函数检测,变量myvar的类型改变为字符串类型(str)。
不仅可以给一个变量赋值为常量,也可以赋值为另一个变量。如:
>>> a=100
>>> b=a
>>> b
100
在这个例子中,"b=a"的实际意义是,变量b和变量a指向同一个存储单元,既然是同一个存储单元,变量b和变量a本质上就是完全相同的,这就好比一个人除了本名之外,还有其他的名字,如笔名、昵称、乳名等等,虽然本质一样,但是可以在不同场合使用。
5.2关于Python的常量问题
在大多数语言中都有常量这个概念,但是Python却没有。其实仔细想想也好像没有设置常量的必要,只要一个变量的值不发生变化,即不给变量重新赋值,它的值当然不会变化,它便是个常量。
5.3基本数据类型
5.3.1整数型和浮点数
整数型(integer),可以是正整数、负整数和0,可以是十进制、八进制、二进制等。
浮点数(float),由整数部分和小数部分组成,主要用于处理包括小数的数。浮点数也可以用科学计数法表示。
5.3.2 字符串类型
字符串类型是由一系列的字母或者其他符号组成的数据序列,通常用单引号、双引号或三引号括起来。
用单引号和双引号括起来的字符串只能放在同一行,用三引号括起来的字符串可以分布在连续多行上。如:
name="我的名字叫王小明"
old="今年6岁"
introduce="""我想说: 我是中国娃
爱讲普通话
要学习写标准的汉字"""
print(name)
print(old)
print(introduce)
运行结果为:我的名字叫王小明
今年6岁
我想说: 我是中国娃
爱讲普通话
要学习写标准的汉字
不管是哪一种引号形式,括起来的部分是一个整体,包括空格和换行符都属于字符串的一部分。
为了保证特殊的输出效果,Python中的字符串支持转义字符,可使用反斜杠""对一些特殊字符进行转义。常用的转义字符如下:
续行符
换行符
空
水平制表符
" 双引号
’ 单引号
一个反斜杠
f 换页
其中,续行符("")用于当一个字符串在一行写不下时用续行符进行连接,但通常更多的采用小括号"()"即可。
如:
第一种方法采用续行符(""):
>>> str="A thousand wishes, a thousand plans and
a thousand resolutions are better than one action!"
>>> print(str)
A thousand wishes, a thousand plans and a thousand resolutions are better than one action!
第二种方法采用小括号():
>>> str=("A thousand wishes, a thousand plans and "
"a thousand resolutions are better than one action!")
>>> print(str)
A thousand wishes, a thousand plans and a thousand resolutions are better than one action!
下面举例说明换行符(" ")的用法:
>>> str=" 登鹳雀楼 白日依山尽, 黄河入海流。 欲穷千里目, 更上一层楼。 "
>>> print(str)
登鹳雀楼
白日依山尽,
黄河入海流。
欲穷千里目,
更上一层楼。
下面举例说明使用转义字符输出双引号(")的方法:
>>> str="王之涣的诗《登鹳雀楼》中这样写道:" 白日依山尽,黄河入海流。欲穷千里目,更上一层楼。""
>>> print(str)
王之涣的诗《登鹳雀楼》中这样写道:" 白日依山尽,黄河入海流。欲穷千里目,更上一层楼。"
>>>
5.3.3布尔类型
布尔类型用来表示逻辑值,所谓逻辑判断的结果,不外乎"真"或"假"两种情况。在Python中"真"用True表示,"假"用False表示。如果布尔类型的变量参与算数运算,则True被当作1,False被当作0。
如:
>>> result=True
>>> print(result)
True
>>> print(result+1)
2
>>> result=False
>>> print(result)
False
>>> print(result+1)
1
5.3.4类型强制转换
Python是一种弱数据类型语言,可以通过给变量重新赋值的方法改变数据类型。但有时为了强制改变数据类型,就要使用类型转换函数来改变。
譬如,为了从键盘读入成绩的数据,可以用float()函数将input()语句读入的字符串转换为浮点数,再赋值给变量score。
>>> score=input("请输入您的成绩:")
请输入您的成绩:96.5 (从键盘输入96.5)
为了计算成绩比及格线高了多少分,使用下面的命令,发现出现了错误提示如下:
>>> score-60
Traceback (most recent call last):
File "", line 1, in
score-60
TypeError: unsupported operand type(s) for -: "str" and "int"
这是属于类型错误,原因是从键盘读入的成绩值(96.5)并非数值类型,不能参与算数运算。用type()函数可以进一步查询变量score的数据类型。
>>> type(score)
使用float()函数进行强制转换后,就可以解决上述问题:
>>> score=float(input("请输入您的成绩:"))
请输入您的成绩:96.5
>>> score=float(score)
>>> type(score)
>>> score-60
36.5
下表列举了一些常用的类型转换函数:
常用数据类型转换函数
函 数
作 用
int(x)
将 x 转换成整数类型
float(x)
将 x 转换成浮点数类型
complex(real,[,imag])
创建一个复数
str(x)
将 x 转换为字符串
repr(x)
将 x 转换为表达式字符串
eval(str)
计算在字符串中的有效 Python 表达式,并返回一个对象
chr(x)
将整数 x 转换为一个字符
ord(x)
将一个字符 x 转换为它对应的整数值
hex(x)
将一个整数 x 转换为一个十六进制字符串
oct(x)
将一个整数 x 转换为一个八进制的字符串