[TOC]
# 介紹
> 本章主要是是介紹數字和字符串內置的各種方法. 方法很多沒必要全部死記硬背記住!只需要熟悉幾個常用的就好! 其余的方法可以查看文檔和IDE提示
**方法:表示對象的各種功能**

# 數字Number
>Python 數字數據類型用于存儲數值。
數據類型是不允許改變的,這就意味著如果改變數字數據類型得值,將重新分配內存空間。
## 創建和交換
```
a=3;
b =4;
a,b = b,a;
```
## del刪除數字對象引用
```
del 變量名1,變量名2,....
```
## 4種不同的整數類型
- 整型(Int)
- 長整型(long integers) 表示無限制大小的整數 `比如:51924361L` 后綴為大小寫的L
- 浮點型(float) 可以用科學計數法表示

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

## 操作符號
- `+` 連接
- `*` 重復
- `變量[索引]` 取值
- `[開始:結束]` 截取某段
- `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. 字符串前幾位加密顯示

2. 智能提示

3. 綜合案例: 一篇文章中每個單詞出現的次數統計!