Python 基本元素
一、Python 数据类型
在 Pthon 中有许多的最基本的内置数据类型,如下:
布尔型 | 表示真假的类型,仅包含True和False两种取值 |
整型 | 整数,例如:63、10000000 |
浮点型 |
小数,例如:3.1415926,或用科学计数法表示的数字, 例如:1.0e8,它表示 1 乘以 10 的 8次方,也可写成 100000000.0 |
字符串型 | 由字符组成的序列,如:abcdef,zdafd |
二、Python 中的变量
在 Python 中,变量的特性和命名规则和shell中差不多。
变量名规则:
1. 变量名可以是以下字符及其组合:
* 小写字母(a-z)
* 大写字母(A-Z)
* 数字(0-9)
* 下划线 ( _ ),在Python中以下划线开头的变量名有特殊意义,以后会提到。
2. 不允许以数字和特殊符号开头,以下是非法的:
2a *a ~a @a
3. 变量名区分大写,变量名 a 和 变量名 A 不是同一个变量
4. 变量名不要用下面的这些词,因为这些都是 Python 的保留关键字
False True class return for while continue break
finally None lambda if else elif yield assert
with raise pass from and global
try except def del or is not in as
在变量这部分,你需要理解的是下面的现象
1 >>> a = 10
2 >>> b = a
3 >>> print(a)
4 10
5 >>> print(b)
6 10
7 >>> a = 20
8 >>> print(a)
9 20
10 >>> print(b)
11 10
12 >>>
三、 数字
Python 中本身支持整数和浮点数,可以对这些数直接进行运算。
1. 运算符有以下几种
+ 加法
- 减法
* 乘法
/ 浮点数除法 7 / 2 3.5
// 整数除法 7 // 2 3
% 模(求余数) 7 % 3 1
** 幂 2 ** 3 8
-= 对变量进行自减 a = 2 a -= 3 print(a) 的值会是 -1
+= 对变量进行自加 a = 2 a += 3 print(a) 的值会是 5
*= 自乘
//+ 自整除
2. 整数
任何仅含数字的序列在 Python 中都被认为是整数
1 >>> 0.5
2 0.5
3 >>> 5
4 5
5 >>> -2
6 -2
7 >>> 0
8 0
9 >>> 09
10 File "<stdin>", line 1
11 09
12 ^
13 SyntaxError: invalid token
14 >>>
注意最后的 09 ,在 Python中你不能一数字 0 作为前缀放在其他数字的前面,解释器会报 语法错误。
3. 基数
在 Python 中,整数默认使用十进制数(以10为底),除非你在数字前添加前缀,显式的指定使用其他基数。
基数是指在必须进位前可以使用的数字的最大值,比如,以2为底时,也就是二进制的数。可以使用的数字只有 0 和 1 ,而 1 是其中最大值的数字, 1 就是二进制的的基数。
在 Python 中可以使用四种进制的数字:
* 十进制 直接用数字本身表示; 1、35等
* 二进制 用0b(数字0)或者0B作为前缀,后面跟上1和0 的任意组合来表示;如:0b10011
* 八进制 用0o(数字0和小写字母o)或者0O(数字0和大写字母O为前缀,后面跟上0-7数字的任意组合;如:0o765
* 十六进制 用0x(数字0和小写字母x)为前缀,后面跟0-9,A-F的任意组合表示;如:0x09Fa
4. 类型转换
函数 int() 可以将数字类型转换为 整型,它会保留数据的整数部分,把后面小数部分舍弃(不是四舍五入)。
1 >>> int(True)
2 1
3 >>> int(False)
4 0
5 >>> int('99')
6 99
7 >>> int(0.999)
8 0
9 >>> int(1.0e4)
10 10000
11 >>> int('-36')
12 -36
13 >>> int('-32')
14 -32
15 >>>
5。 浮点数
函数 float() 可以将数字类型转换为 浮点型
1 >>> float(True)
2 1.0
3 >>> float(False)
4 0.0
5 >>> float(98)
6 98.0
7 >>> float('98.6')
8 98.6
9 >>> float('-98.7')
10 -98.7
11 >>> float('+1.6')
12 1.6
13 >>> float('1.0e4')
14 10000.0
15 >>> float(1.0e3)
16 1000.0
17 >>>
四、字符串
1. 字符串的创建
在 Python 中创建字符串很简单,把一系列字符包裹在一对单引号,或者一对双引号中即可,如下:
1 >>> 'Hello shark' 2 'Hello shark' 3 >>> "我是鲨鱼" 4 '我是鲨鱼' 5 >>> '特殊符号也可以包含进来#!@~&%%()' 6 '特殊符号也可以包含进来#!@~&%%()' 7 >>> '!$%!$%' 8 '!$%!$%' 9 >>> '-0.53234' 10 '-0.53234' 11 >>>
假如在多行中定义字符串也是可以的,需要用一对三个单引号或者一对三个双引号来创建,如下:
>>> poem = '''There was a Young Lady of Norway,
... Who casually sat in a doorway;
... When the door squeezed her flat;
... She exclaimed, "What of that?"
... This courageous Young Lady of ^Norway.'''
>>> print(poem)
There was a Young Lady of Norway,
Who casually sat in a doorway;
When the door squeezed her flat;
She exclaimed, "What of that?"
This courageous Young Lady of orway.
>>>
上面的 ... 我称它为 次提示符
2. 使用 str()进行类型转换
str() 函数可以将数据类型转换为 字符串
当你调用 print() 函数时,Python 内部会自动使用 str() 将非字符串对象转换为字符串
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 >>> str(98.6)
2 '98.6'
3 >>> str(1.0e4)
4 '10000.0'
5 >>> str(True)
6 'True'
7 >>>
8 >>> input('请输入一些测试信息:')
9 请输入一些测试信息:$!dkadfj~09977,1.0e4
10 '$!dkadfj~09977,1.0e4'
11 >>> input('请输入一些测试信息:')
12 请输入一些测试信息:-0.5
13 '-0.5'
14 >>>
3. 使用转义符 \
使用反斜线 \ 可以对一些特殊符号、标点符号进行转义,使其在变为字符本身;如:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 >>> testimony = "\"I did notting!\" he said. \"Not that either! Or the other thing.\""
2 >>> print(testimony)
3 "I did notting!" he said. "Not that either! Or the other thing."
4 >>>
5
6 同时也可以把一些特别规定好的字母变为非原有意义,比如:\n 换行符, \t 制表符
7 >>> palindrome = 'A man,\nA plan,\nA cannl,:\nPanama.'
8 >>> print(palindrome)
9 A man,
10 A plan,
11 A cannl,:
12 Panama.
13 >>>
4. 使用 + 拼接
可以使用 + 将多个字符产或字符串变量拼接组合在一起,如:
1 >>> 'Hello ' + 'world'
2 'Hello world'
3 >>> a = '你好'
4 >>> a + '世界'
5 '你好世界'
6 >>>
也可以将一个字符串(非字符串变量)直接放到另一个的后面实现拼接。
在这里需要你记住:
拼接时,Python不会为你在两个被拼接的字符串之间,自动添加空格;但是 print() 函数可以帮你实现。如
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 >>> a = 'Hello'
2 >>> b = 'world'
3 >>> print(a,b)
4 Hello world
5 >>> print('Hello','world')
6 Hello world
7 >>>
8
9 还有不能把一个字符串或者字符串变量用 + 和一个非字符型拼接
10 >>> a = 'Hello'
11 >>> c = 3
12 >>> print(a,c)
13 Hello 3
14 >>> print(a + c)
15 Traceback (most recent call last):
16 File "<stdin>", line 1, in <module>
17 TypeError: must be str, not int
18 >>>
5. 对字符串和整型进行乘法或加法运算
1 >>> a = 'Na' * 4 + '\n'
2 >>> b = 'Hey ' * 3 + '\n'
3 >>> print(a + a + b)
4 NaNaNaNa
5 NaNaNaNa
6 Hey Hey Hey
7
8 >>> 'a' * 0
9 ''
10 >>>
这里需要你记住 + 一般不建议用,因为每个 + 的两边都会重新开辟一块内存,占用系统资源
6. 使用 [] 提取字符
在字符串后面添加 [] ,并在中括号内指定一个整数型数字,可找到相应位置的单个字符
这里的数字可以叫做偏移量或者索引号,找到的单个字符成为一个元素
索引号从左向右,依次是: 0、1、2、...依次类推,也可以从右向左:...、-3、-2、-1
所以说索引号是从[1...-1],也就是整数值
1 >>> letters = 'a1b2c3d4e5f6'
2 >>> letters[0]
3 'a'
4 >>> letters[-1]
5 '6'
6 >>> letters[3]
7 '2'
8 >>> 'abc'[0]
9 'a'
10 >>>
7. 使用 [start:end:step] 分片
分片操作(slice)可以从一个字串中抽取其中的一部分
* start 是起始索引号
* end 是终止索引号
* step 是可选的步长
需要你记住的是:
分片操作只包含位于起始索引号位置的元素,不包含位于终止索引号位置的元素;同时,起始 和 终止 的意义都是
针对于从左向右的顺序来定义的。
比如:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 >>> letters = 'a1b2c3d4e5f6'
2 >>> letters[0:3] #不包含第 4 个位置的字符,即顾前不顾后
3 'a1b'
4 >>> letters[3]
5 '2'
6 >>> letters[-1:-3]
7 ''
8 >>> letters[-3:-1] # -1 是结束的位置,所以 -1 应该放在 终止索引号 处
9 '5f'
10 >>>
11
12 取出全部字符串
13 >>> letters[:]
14 'a1b2c3d4e5f6'
15 >>>
16 取出第5个位置开始到最后的字符串
17 >>> letters[5:]
18 '3d4e5f6'
19 >>>
20 取出第倒数第5个和倒数第3个的字符
21 >>> letters[-5:-2]
22 '4e5'
23 >>> letters[-3]
24 '5'
25 >>>
26 取出所有的字母
27 >>> letters[::2]
28 'abcdef'
29 >>>
30 取出全部数字字符
31 >>> letters[::-1] # 首先将字符串完全反转,步长可以为负数,此时分片从右到左提取元素
32 '6f5e4d3c2b1a'
33 >>> letters[::-1][::2] # 再对反转后的字符串进行操作,每隔2个字符取一个,从而取出所有的数字字符
34 '654321'
35 >>> letters[::-1][::2][::-1] # 最后将取出的数字字符进行完全反转的操作
36 '123456'
37 >>>
使用 Python 内置函数 len() 获取字符串包含的元素数
>>> len(letters)
12
>>>
使用 split() 分割
split() 函数只适用于字符串,可以以某个符号或者字符为 分隔符 ,来生成一个列表。列表(list)就是由一些列值组成的序列,
值与值之间用逗号分隔开
语法:
string.functione(arguments)
实例:
1 ['abb', 'cc', 'bb', 'dd']
2 >>> letters.split('5')
3 ['a1b2c3d4e', 'f6']
4 >>>
使用 join() 合并
1 >>> list_a = ['hello','world']
2 >>> ','.join(list_a) # 以逗号为分隔符
3 'hello,world'
4 >>> ' '.join(list_a) # 以空格为分隔符
5 'hello world'
6 >>> '\n'.join(list_a) # 以回车为分隔符
7 'hello\nworld'
8 >>> print('\n'.join(list_a)) # 以回车为分隔符,需要用 print() 才能看出效果
9 hello
10 world
11 >>>
熟悉字符串
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 1 >>> poem = '''All that doth flow we cannot liquid name 2 2 ... Or else would fire and water be the same; 3 3 ... But that is liquid which is moist and wet 4 4 ... Fire that property can never get. 5 5 ... Then 'tis not cold that doth the fire put out 6 6 ... But 'tis the wet that makes it dle,no doubt.''' 7 这首诗是否以 All 开头 8 7 >>> poem.startswith('All') 9 8 True 10 11 是否以 The's all,folks 结尾 12 9 >>> poem.endswith('That\'s all,folks') 13 10 False 14 15 查一下诗中第一次出现 the 的位置(只会显式 the 最左边的索引号,没有的话,返回 -1 ) 16 11 >>> word = 'the' 17 12 >>> poem.find(word) 18 13 73 19 20 最后一次出现 the 的索引号 21 14 >>> poem.rfind(word) 22 15 214 23 24 统计出 the 在这首诗中总共出现了多少次 25 20 >>> poem.count(word) 26 21 3 27 28 这首诗是否都是字母和数字 29 22 >>> poem.isalnum() 30 23 False # 显然还有标点符号 31 32 用 strip() 取出字符串两端的指定符号(不传任何参数,就是空格) 33 24 >>> setup = 'a duck goes into a bar...' 34 25 >>> setup.strip('.') 35 26 'a duck goes into a bar' 36 27 >>> setup #这些对字符串的操作都不会改变原来的字符串,只是返回了处理结果 37 28 'a duck goes into a bar...' 38 39 让整个字符串首字母大写 40 29 >>> setup.capitalize() 41 30 'A duck goes into a bar...' 42 43 让字符串中所有的单词的首字母变大写 44 31 >>> setup.title() 45 32 'A Duck Goes Into A Bar...' 46 47 所有的字母变大写 48 33 >>> setup.swapcase() 49 34 'A DUCK GOES INTO A BAR...' 50 所有的字母变小写 51 35 >>> setup.lower() 52 36 'a duck goes into a bar...' 53 54 37 >>> setup = 'a Duck goes into a bar...' 55 整个字符串内的字母大小写反转 56 38 >>> setup.swapcase() 57 39 'A dUCK GOES INTO A BAR...' 58 59 把字符串置于一行的中间,总共打印30个字符,不够的两边添加空格, 60 如果字符串是多行的,居中 只作用于第一行,但是打印的字符串个数是包含所有的字符串的, 61 并且个数的参数是必须的,也可以是 0 62 40 >>> setup.center(30) 63 41 ' a Duck goes into a bar... ' 64 从右边添加空格,总共 30 个字符 65 42 >>> setup.ljust(30) 66 43 'a Duck goes into a bar... ' 67 从右边添加空格,给的个数参数 小于总字符串数量时,只打印出原字符串本身 68 44 >>> setup.ljust(10) 69 45 'a Duck goes into a bar...' 70 从左边添加空格 71 46 >>> setup.rjust(1) 72 47 'a Duck goes into a bar...' 73 74 替换字符串中子串,第一个参数是旧的,第二个参数是新的(这里还是没有正真的修改原字符串哦) 75 48 >>> setup.replace('duck','marmoset') #匹配不到的,返回原字符串 76 49 'a Duck goes into a bar...' 77 50 >>> setup.replace('Duck','marmoset') 78 51 'a marmoset goes into a bar...' 79 80 #可以指定替换的次数,注意这里 a 的后面有空格,只会匹配 a 后面有空格的 81 52 >>> setup.replace('a ','a famous ',100) 82 53 'a famous Duck goes into a famous bar...' 83 #这个就没有空格,会匹配在指定次数范围内的所有 a 84 54 >>> setup.replace('a','a famous',100) 85 55 'a famous Duck goes into a famous ba famousr...' 86 56 >>>
还有一些需要你知道的
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 title处理以下结果是达不到想要效果 2 >>> hero = "I'm xiguatian" 3 >>> hero.title() 4 "I'M Xiguatian" 5 6 可以使用插入string模块,使用capwords函数 7 >>> import string 8 >>> string.capwords(hero) 9 "I'm Xiguatian" 10 >>> 11 12 strip删除字符串两侧的空格(不包含内部空格),并返回结果 13 14 如果希望创建一个不区分大小写,而且自动去除用户误输入的空格字符的变量,可以通过strip和lower相互结合使用 15 >>> name = raw_input('What is your name? ').strip().lower()