计算机数据的基本数据类型
1. 所有计算机语法几个通识概念
1.1 表达式
表达式是由数字、运算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。
表达式特点:
表达式一般仅仅用于计算一些结果,不会对程序产生 实质性的影响;
如果在交互模式中输入一个表达式,解释器会自动将表达式的结果输出。
1.2 语句
语句是一个语法上自成体系的单位,它由一个词或句法上有关连的一组词构成。
语句的执行一般会对程序产生一定的影响,在交互模式中不一定会输出语句的执行结果。
1.3 程序(program)
程序就是由一条一条的语句和一条一条的表达式构成的。
1.4 函数(function)
简单的说函数就是一种语句,函数的作用是专门用来完成 特定的功能。
函数的形状:xxx()
函数的分类:
1)内置函数 : 或者叫内建函数,就是由编程语言的语法规定存在的函数。这些函数,包含在编译器的运行时库中,程序员不必再单独书写代码实现它,只需要 调用 既可。参考链接
2)自定义函数 : 由程序员 自主创建 的函数。
当我们需要完成某个功能时,就可以去调用内置函数,或者自定义函数。
函数的两个要素:
1)参数
2)返回值
2. 标识符
2.1 关键字
Python语言一些具有特殊功能的标识符,这就是所谓的关键字。关键字是Python语言 已经使用的了 ,所以 不允许 开发者自己定义和关键字相同的名字的标识符。
Python语言关键字查询方法:
>>> import keyword
>>> keyword.kwlist
Python语言关键字汇总:
2.2 标识符概念
2.2.1 标识符:开发人员在程序中自定义的一些符号和名称。标识符是 自己定义的 ,如 变量名 、函数名 等。
标识符的组成:由26个英文字母大小写、数字 0-9 、符号 _ 和 $ 。
2.2.2 标识符的命名规则:
1)标识符中可以使用 字母、数字、__ 作为开头,但是 绝对 绝对 绝对 不能使用 数字 来开头。
例如:
name1 (正确)
name_1 (正确)
_ Name1(正确)
1name (不正确)
2)Python语言中不能使用 关键字 和 保留字 来作为标识符。(详情参见上面的 2.1 关键字。)
2.2.3 标识符的命名方式:
1)驼峰命名法:
小驼峰式命名法: 第一个单词以小写字母开始,第二个单词的首字母大写;例如:myName、aDog。
大驼峰式命名法: 每一个单字的首字母都采用大写字母;例如:FirstName、LastName。
2)下划线命名法:顾名思义,就是以下划线开头的命名方式;例如:_ Name1 。
不过在程序员中还有一种命名法比较流行,就是用下划线“_”来连接所有的单词;比如 get_url buffer_size。
3. 基本数据类型
数据类型:指变量中的值的类型,也就是可以为变量赋哪些值。
3.1 整数和小数
整数:所有整数 例如 a = 1 b = 100 c =999 都是 int类型 ,我们称之为 整型;
如果传入的整数过长,我们可以用 _ 对输入的整数进行分割。参考实例:
a = 123_456_789
print(a) # 123456789
小数常量:所有小数 例如 a = 1.2 b=6.66 用 float类型 表示,我们称之为 浮点型。
3.2 什么是 布尔值 和 空值
布尔值(Boolean):这个类型的值只有2个,一个是 True ,一个是 False 。
None常量:这个类型的值只有一个数值,就是None;也就是 空 值。
特别提示 :0 、None 、‘ ’ 三个值的中文意思都是 没有 ,但是在编写代码时所代表的意义可是 完全!完全!!完全!!!不一样的 。具体怎么个不一样法,自己在操作的过程中再细细地体会,现在只需要先牢牢的记住就好。
4. 字符串
4.1 什么是字符串
字符串主要就是表示一段文本信息。是由数字、字母、下划线组成的一串字符。
在 Python语言 中用 一对双引号 或者 一对单引号 包裹的内容就是 字符串 。
检查字符串值的类型 函数:type()
>>>type(520)
<class 'int'>
>>>type(5.20)
<class 'float'>
>>>type('520')
<class 'str'>
注意:
1)单引号和双引号不能混合使用;
>>>a = 'abc"
SyntaxError: EOL while scanning string literal
2)相同引号之间不能相互嵌套。
a = 'what's your name'
print(a) # SyntaxError: invalid syntax
4.2 转义字符
转义字符是一种特殊的字符常量。转义字符以反斜线" \ "开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称 “转义” 字符。
常用的转义字符:
\t 表示 制表符
\n 表示 换行符
\\ 表示 反斜杠 \
\’ 表示 ’
\ ‘’ 表示 ‘’
4.3 长字符串
长字符串又叫做 文档字符串 我们使用三重引号 ‘’‘xxxxxxxx’’’ 来表示一个长字符串。
三重引号内的字符串可以换行,并且会保留字符串中的格式。
4.4 格式化字符串(补上代码操作代码,详见视频)
方法1)拼串 +
‘+’ 运算只能在 同类型 间运算。整形(int) 之间的 ‘+’ 运算就是加法(求和)运算,字符串(str) 之间的 ‘+’ 运算就是拼串;字符串(str) 不能够 和其他类型做 ‘+’ 运算。如果做了,会报 TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’ 这个错误;不同类型之间想做 ‘+’ 运算必须要转换为同一类型。
>>> 6 + 6
12
>>> 'a' + 'b'
'ab'
>>> 6 + int("6")
12
>>> 6 + "6"
TypeError: unsupported operand type(s) for +: 'int' and 'str'
s = 'Hello'
print('s =' + s) # s =Hello
方法2)传参
通过函数之间传递的参数来格式化我们的信息。
s = 'Hello'
print('s =',s) # s = Hello
方法3)占位符 %
%f 浮点数(float)占位
%d 整数(int)占位
>>> 'i %d years old' % '28'
i 28 years old
%s 字符串占位
>>> 'i love %s' % 'study'
i love study
>>> a = 'i love %s'
>>> a % 'python'
i love python
>>> a % 'JAVA'
i love JAVA
s = 's = %s' % 'Hello"
print(s) # s = Hello
s = 's = %s , s2 = %s' % ('Hello')
print(s) # TypeError: not enough arguments for format string
s = 's = %s , s2 = %s' % ('Hello','World')
print(s) # s = Hello , s2 = World
方法4)格式化字符串方式 f’str.{变量}’ / str.format()
s1 = '钢铁侠'
s2 = '蜘蛛侠'
a = f'Hello {s1},{s2}'
print(a) # Hello 钢铁侠,蜘蛛侠
s = 'i like {a}'
a = s.format('python')
print(a) # KeyError: 'a'
s = 'i like {}'
a = s.format('python')
print(a) # i like python
s = 'i like {0}'
a = s.format('python')
print(a) # i like python
s = 'i like {1}'
a = s.format('python')
print(a) # IndexError: Replacement index 1 out of range for positional args tuple
从 Python 2.6 开始(注意:不是 Python 3.6,是 Python 2.6 ),新增了一种格式化字符串函数:str.format() 。这个方法增强了函数格式化的一种功能,语法的意思是:通过 ‘{ }’ 代替 ‘%’ ,format 的 () 里面 不限制 衔接参数的类型。
a = f'语句 {s}'
print(a) # NameError: name 's' is not defined
s = 'i like {0},{1}'
a = s.format('p','b')
print(a) # i like p,b
s = 'i like {1},{2}'
a = s.format('p','b')
print(a) # IndexError: Replacement index 2 out of range for positional args tuple
s = 'i like {},{}'
a = s.format('p','b')
print(a) # i like p,b
通过以上八个例子让我们明白 f’str.{变量}’ 和 str.format()都该在什么场景下使用。
如果 没有变量值(如 方法4 最初例子里的 s1 和 s2),就使用函数 str.format() 向 { } 里 传递数字 或者 不传(直接空着);
如果 有变量值,那就不建议使用 str.format() 方法,直接使用 f’str.{变量1},{变量2}…’ 。
在这里 再次着重提醒:方法4 里使用的 “ f ”不是关键字,它就是一种 格式化字符串 的方式的一种语法。
4.5 字符串的其他操作
len() 字符串的长度
a = 'I love python'
print(len(a)) # 13
max() 最大值
a = 'I love python'
print(max(a)) # y
min() 最小值
a = 'Ilovepython'
print(min(a)) # I
str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
print str.split( ); # 以空格为分隔符,包含 \n
# ['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
print str.split(' ', 1 ); # 以空格为分隔符,分隔成两个
# ['Line1-abcdef', '\nLine2-abc \nLine4-abcd']
str = "-";
seq = ("a", "b", "c"); # 字符串序列
print str.join( seq ); # a-b-c
字符串去空格操作:
str = "000000032100Runoob001230000000";
print str.strip( '0' ); # 去除首尾字符 0 32100Runoob00123
str2 = " Runoob ";
print str2.strip(); # 去除首尾空格 Runoob
str = " this is string example....wow!!! ";
print str.lstrip(); # this is string example....wow!!!
str = "88888888this is string example....wow!!!8888888";
print str.lstrip('8'); # this is string example....wow!!!8888888
str = " this is string example....wow!!! ";
print str.rstrip(); # this is string example....wow!!!
str = "88888888this is string example....wow!!!8888888";
print str.rstrip('8'); # 88888888this is string example....wow!!!
字符串大小写操作:
str = "this is string example....wow!!!";
print "str.upper() : ", str.upper() # str.upper() : THIS IS STRING EXAMPLE....WOW!!!
str = "THIS IS STRING EXAMPLE....WOW!!!";
print str.lower(); # this is string example....wow!!!
str = "THIS IS STRING EXAMPLE....WOW!!!";
print str.isupper(); # True
str = "THIS is string example....wow!!!";
print str.isupper(); # False
str = "THIS is string example....wow!!!";
print str.islower(); # False
str = "this is string example....wow!!!";
print str.islower(); # True
Pyton工具书:The Python Tutorial — Python 3.7.4 documentation
5. 变量
5.1 变量的概念?
变量是计算机内存中的一块区域,存储规定范围内的值,当中的值是可以改变的,通俗的说变量就是给一块数据起个名字。
变量命名规则:
1)变量名由字母、数字、下划线组成;
2)老生常谈: 数字不能开头;
3)不能使用关键字;
对 变量的命名 规则,总结成一句话就是:要符合标识符的命名规范!
插入一个注意:两个对象相等 和 两个对象是同一个对象 是 两个概念。 请注意,你没看错,就是 两个概念。 请注意我们的每一个用词,这是 数学 不是 哲学 。
s1 = {'Jiang':'Python'}
import copy
s2 = copy.deepcopy(s1)
print(s2) # {'Jiang': 'Python'}
print(id(s1),id(s2))
print(s1==s2)
5.2 变量的运算
变量的运算就是正常的 四则运算 ,需要注意的是在运算过程中含有浮点数,那么它返回的就是一个浮点数类型。
课后作业
a,b = 6,8
我想让 a=8,b=6 怎么才能实现?
参考答案
a,b = 6,8
a,b = b,a # 方案一(个人理解:这个方法只适合在练习时使用,不太适合在程序编写时使用)
tmpe = a # 方案二(对 变量 的灵活使用)
a = b
b = tmpe
print('a = %d, b = %d'%(b,a)) # 方案三(对 占位符 的灵活使用)
b = b - a # 方案四(对 算术运算符 的灵活使用)
a = b + a
b = a - b
print(a,b)