[TOC]
# 介绍
> 本章主要是是介绍数字和字符串内置的各种方法. 方法很多没必要全部死记硬背记住!只需要熟悉几个常用的就好! 其余的方法可以查看文档和IDE提示
**方法:表示对象的各种功能**
![汽车对象方法](https://box.kancloud.cn/c0d7547730c71a97cbe640ecec2cfd84_915x562.png)
# 数字Number
>Python 数字数据类型用于存储数值。
数据类型是不允许改变的,这就意味着如果改变数字数据类型得值,将重新分配内存空间。
## 创建和交换
```
a=3;
b =4;
a,b = b,a;
```
## del删除数字对象引用
```
del 变量名1,变量名2,....
```
## 4种不同的整数类型
- 整型(Int)
- 长整型(long integers) 表示无限制大小的整数 `比如:51924361L` 后缀为大小写的L
- 浮点型(float) 可以用科学计数法表示
![科学计数法](https://box.kancloud.cn/00f1643ffa99a6aa1698fce03dedeb5a_167x25.png)
250
= e <sup>2</sup>
= 2.5 * 10 <sup>2</sup>
- 复数(complex) `3.14j` 复数的实部a和虚部b都是浮点型。
## 强制数字类型转换
>有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。
- int(x)
- float(x)
## 数字运算
数字运算时,自动向精度高类型的转换!
```
8/5 #总是返回一个浮点数
17 // 3 #整数除法返回向下取整后的结果 5
17 % 3 # %操作符返回除法的余数 2
7.0//2 #自动转换结果为 3.0
```
## 数学
>常用数学函数分为2类,一类是系统内内建函数(不需要导入其他模块直接可使用的),第二类:包含在数学模块mach模块中的
**内键(builtins)方法**
| 内建函数 | 返回值(描述) |
| :---: | :---: |
| abs(x) | 返回数字绝对值,如abs(-10)返回10 |
| max(x1,x2,...) | 返回给定参数或序列最大值 |
| min(x1,x2...) | 返回给定参数或序列最小值 |
| round(x,n) | 四色五入,n表示小数位数 |
| 等... | 等... |
**数学模块(math)方法**
```
import math
math.ceill(3.1)
```
| 数学模块 | 返回值(描述) |
| :---: | :---: |
| ceil(x) | 向上取整如, math.ceill(3.1) 结果为4 |
| floor(x) | 向下取整,math.floor(3.99) 结果为3 |
| math.pi | 常量 pi |
| 等... | 等... |
以上是工作中常用的,更多参考帮助文档:
[数学函数](http://www.runoob.com/python3/python3-number.html)
**随机数函数**
>如果想使用随机数函数,必须先导入随机数模块! random
| 随机数模块 | 返回值(描述) |
| :---: | :---: |
| choice(seq) |从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。 |
| randrange (开始 ,结束 ,可选参数步长) | 从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1 |
| random() | 随机生成下一个实数,它在[0,1)范围内。 |
| 等... | 等... |
```
import random
print('随机:',random.random()) #0-1随机数
print('随机:',random.choice(range(10))) #0-9随机选一个
print('指定范围产生随机数:',random.randrange(1,10)) #指定范围(开始,结束,步长)
```
>案例: 还记得用1-3模拟猜拳游戏么?
# 字符串String
> 字符串是一组连续的字符! 是工作和生活中必不可少的一种数据类型!这里再次总结下最常用操作并信息介绍字符串的内置函数
## 组成
>字符串由一组连续的中文或英文字符组成
从左向右第一个位置为: 0
从右向左第一个位置为: -1
![字符串存储结构](https://box.kancloud.cn/6379f7f11f9d01a6dfd14b6094d0e610_604x99.png)
## 操作符号
- `+` 连接
- `*` 重复
- `变量[索引]` 取值
- `[开始:结束]` 截取某段
- `in 和 not in` 是否存在
- `%` 格式化占位符
- `字符串.format()` 格式化方法
| 字符串格式化符 | 描述 |
| :---: | :---: |
| %s | 字符串 |
| %d | 整数 |
| %f | 格式化浮点数字,可指定小数点后的精度 %.2f保留2位 |
```
name ='tom'
age='20'
sex='男'
print('你好'+name+'年龄:'+age+'--性别:'+sex)
print("abc"*3)
print('a' in 'abc')
print('a' not in 'abc')
name = '小丽'
print ("我叫 %s 今年 %d 岁!" % ('小明', 10)) #不支持变量
print ("我叫 {} 今年{} 岁!".format(name,age)) # 支持变量
```
## format格式化字符串
> 语法: 通过{} 和: 代替 %
**通过位置**
**通过关键字参数**
**通过下标**
**格式限定符号**
```
#format格式字符串,通过关键字
print('{0},{1}'.format('aa',19))
print('{name},{age}'.format(age=20,name='tom'))
#格式化通过下标
p = ['tom11',18]
p2 = ['tom',188]
print('名字{0[0]},年龄{1[1]}'.format(p,p2))
# ^居中 < 左对齐 > 右对齐
print('{:a<11}'.format('189'))#左对齐填充a
print('{:a>11}'.format('189'))#右对齐填充a
print('{:>11}'.format('189'))#右对齐填充空格
print('{:^11}'.format('189')) #居中
```
## 字符串方法
> 字符串对象本身自带很多内置函数便于灵活操作字符串,比如长度获取,增加,查找,替换等
> 注意:字符串方法比较多! 记住以下常用的就好!
**学会查看文档和IDE提示**
```
str1 = "abcDaEF.com"
print("我叫:{}".format(name))#格式化
print(str1.replace(' ','*')) #替换
print(len(str1))#长度
print(str1.count('a'))#字符出现的次数
print(str1.find('Da')) #查找
print(str1.capitalize()) #第一个自粗转换为大写
print(str1.endswith('.com')) #结尾
print(str1.startswith('abc')) #开始
print("a\tbc".expandtabs(8))#N个空格替换制表符
print(str1.index('a')) # 和find一样,但是找不到报错
print(str1.isnumeric()) #是否只包含数字
fruit=['桃子','香蕉','菠萝'];
print("-".join(fruit)) #连接
print(str1.lower())#全部转换为小写
print(str1.upper())#全部转换为大写
print(len(' abc '.strip()))#删除前后空格
print(len(' abc '.rstrip()))#删除右空格
print(len(' abc '.lstrip()))#删除左空格
print('abc'.zfill(5)) #左填充
print('abc'.rjust(5,'*')) #填充
print("a,b,c,d e f".split(",")) #字符串拆分
print("a b c d e f".split()) #字符串分割,默认按照空格拆分
```
[更多字符方法参考文档](http://www.runoob.com/python3/python3-string.html)
# 总结和练习
> 本章主要内容是数字和字符串对象常用的内置方法介绍!
1. 字符串前几位加密显示
![字符串替换](https://box.kancloud.cn/9aad64d2a1bb40a5f2aebc1d44b3cffa_310x286.png)
2. 智能提示
![智能提示](https://box.kancloud.cn/af62535753a73303cb6a01c6111f3b21_843x439.png)
3. 综合案例: 一篇文章中每个单词出现的次数统计!