- images
- results
- .gitignore
- 1.1概论.ipynb
- 1.2 环境配置.pdf
- 1.3数据类型.ipynb
- 1.4 人机交互.ipynb
- 1.5 对象与变量.ipynb
- 1.6 编码与命名规范.ipynb
- 2.1 数值类型.ipynb
- 2.2 数值类型转换.ipynb
- 2.3 数值元算.ipynb
- 2.4常用数学运算函数.ipynb
- 2.5 math 模块及其应用.ipynb
- 2.6.1 逻辑值测试.ipynb
- 2.6.2 成员运算.ipynb
- 2.6.3 比较运算.ipynb
- 2.6.4 布尔运算.ipynb
- 2.6.5 运算优先级.ipynb
- 2.ipynb
- 3.1 流程控制结构.ipynb
- 3.3.1 for 循环语句.ipynb
- 3.3.3 rang.ipynb
- 3.3.3 while 循环语句.ipynb
- 3.4 and 3.5 分支结构和条件.ipynb
- 3.6 and 3.7 .ipynb
- 3.9 异常处理.ipynb
- 4 函数和模块化编程.ipynb
- 4.1 函数的定义、调用与返回值.ipynb
- 4.2 函数的参数传递.ipynb
- 4.3 变量的作用域.ipynb
- 4.4 匿名函数.ipynb
- 4.5 递归.ipynb
- 4.6 内置函数.ipynb
- 4.7 模块化程序设计.ipynb
- 5.1 序列通用操作.ipynb
- 5.1.1 索引.ipynb
- 5.1.2 切片.ipynb
- 5.1.3 序列拼接与重复.ipynb
- 5.1.4 成员测试.ipynb
- 5.2.1 字符串的创建.ipynb
- 5.2.2 字符串常量.ipynb
- 5.2.4 字符串的遍历.ipynb
- 5.2.5 文件遍历.ipynb
- 5.2.6 字符串的处理方法.ipynb
- 5.2.7 字符串格式化.ipynb
- 5.2.8 转义字符.ipynb
- 5.3 random 模块及其应用.ipynb
- 6.1 元组.ipynb
- 6.2 列表.ipynb
- 6.2.1 列表的创建.ipynb
- 6.2.2 列表的更新.ipynb
- 6.2.3 列表的删除.ipynb
- 6.2.4 列表的排序.ipynb
- 6.2.5 列表赋值与复制.ipynb
- 6.2.6 列表推导式.ipynb
- 6.2.8 常用内置函数.ipynb
- 6.2.9 列表嵌套及其排序.ipynb
- 6.3 列表综合应用.ipynb
- 7.1.1 集合的创建.ipynb
- 7.1.2可变集合类型的操作.ipynb
- 7.1.3 成员关系.ipynb
- 7.1.4 集合关系.ipynb
- 7.1.5 集合运算.ipynb
- 7.2.1 字典创建.ipynb
- 7.2.2 获取字典值.ipynb
- 7.2.3 修改字典值.ipynb
- 7.2.4内置函数与方法.ipynb
- 7.2.5字典排序输出.ipynb
- 7.3 集合与字典的应用.ipynb
- 8 中 numpy 概述.ipynb
- 8 中panda 库.ipynb
- 8.1 文件的打开与关闭.ipynb
- 8.2 文件读写操作.ipynb
- 8.3 文件的应用.ipynb
- 8.4 numpy 文件操作.ipynb
- 8.4.2 and 3.ipynb
- 8.5.1 pandas文件读写.ipynb
- 8.5.2 and 3 and 4.ipynb
- 9.1 matplotlib 线性图.ipynb
- 9.1.5 数据文化绘图.ipynb
- 9.2 非线性图.ipynb
- 9.3 词云.ipynb
- _overview.md
- _readme.ipynb
- coding_here.ipynb
- dream.png
- score.txt
- score_total.csv
- 成绩分析综合.json
2.1 数值类型.ipynb @master — view markup · raw · history · blame
数值类型¶
Python 3 中可参与数学运算的数值类型主要有三种:
- __整数__(int)
- __浮点数__(float)
- __复数__(complex)
2.1.1 整数¶
__整数__是不带小数点的数字,包括0、正整数和负整数。整数的4种进制表示如表2.1所示。 例如:123、-45、0b1101(二进制)、0o17(八进制)、0xff(十六进制)。</font>
| 进制种类 | 引导符号 | 描述与示例 |
|---|---|---|
| 十进制 | 无 | 由字符0到9组成,遇10进1,如:99, 156 |
| 二进制 | 0b或0B | 由字符0和1组成,遇2进1,如:0b1010,0B1111 |
| 八进制 | 0o或0O | 由字符0到7组成,遇8进1,如:0o107,0O777 |
| 十六进制 | 0x或0X | 由字符0到9及a、b、c、d、e、f或A、B、C、D、E、F组成,遇16进1,如0xFF,0X10A |
# 十进制整数
0,123,-45
# 二进制整数
0b1101,0B1100
# 八进制整数
0o17,0O777
# 十六进制整数
0xff,0X123456789ABCDEF
一般来说,Python 3 中__整数__几乎是__没有限制大小的__,可以存储计算机内存能够容纳的无限大整数,而且整数永远是精确的。</font>
import math # 导入 math 库
print(math.factorial(100)) # 计算100的阶乘,158位整数
练一练
# 试着仿照上面的例子,试着在下面写代码求解1000的阶乘,看看是否能正确显示
除了通常意义上的整数以外,__布尔值__(bool)属于整数的__子类型__。布尔值是两个常量对象__False__ 和 __True__。 它们被用来表示逻辑上的__真值__或__假值__。在数字类的上下文中,例如被用作算术运算符的参数时,它们的行为分别类似于__整数 0 和 1__ 。 </font>
False + 2
True * 2 + 3
__内置函数 bool()__可被用来将任意值转换为布尔值,只要该值可被解析为一个逻辑值。</font> 包括负数和正数)都会被转换为 True
print(bool(3+4))
print(bool(3-9))
bool(10-5*2)
2.1.2 浮点数¶
浮点数有两种表示方法:
- 十进制表示
十进制表示的__浮点数__由整数部分与小数部分组成,其小数部分可以没有值,但__小数点__必须要有,此时相当于小数部分为0。</font>
123.45,23.0,0.78,12.,.15
print(.15*10) ## .15 代表的是 0.15
print(float(3)) ## 必须有小数点 输出为 3.0
import decimal
b = decimal.Decimal(pow(10.0,23))
print(b)
b = decimal.Decimal(pow(10.0,22))
print(b)
b
- 科学计数法
科学计数法表示为<x>e<n>,等价于数学中的$x \times\ 10^n $。
0.48e-5,2e3,2.53e3
计算机中数字的表示采用的是二进制的方式,十进制与二进制转换过程中可能会引入误差,所以一般来说,__浮点数无法保证百分之百的精确__。</font>
print(43.02 * 7) # 预期输出:301.14
print(0.1 + 0.2)
## C语言也会出现这样的情况
# #include <stdio.h>
# int main() {
# double result = 0.1 + 0.2;
# printf("%.17f\n", result); // 输出: 0.30000000000000004
# return 0;
# }
5.02 / 0.1 # 预期输出:50.20
Python 3对于浮点数默认提供__大约17位数字的精度__。占8 个字节(64位)内存空间,其数字范围为$1.7× 10^{-308} ~1.7× 10^{308}$。</font>
pow(809.0, 106) # 输出809的106次幂的值
pow(810.0, 106) # 输出810的106次幂的值,引发OverflowError
系统会将输入的浮点数只保留__17位有效数字__,其余的截断__丢弃__,所以在计算机中浮点数经常__无法精确表示__。</font>
a = 3.1415926535897932384626433832795
b = 314159.26535897932384626433832795
c = 31415926535897.932384626433832795
print(a, b, c, sep='\n')
Python默认的是17位有效数字的精度,当计算需要使用更高的精度(超过17位小数)的时候,可以使用以下方法进行处理:
print('{:.30f}'.format(314159.265358979323846264338327950288419716939937510))
print('{:.30f}'.format(3.14159265358979323846264338327950288419716939937510))
输出值:
314159.265358979348093271255493164062
3.141592653589793115997963468544
实际值:
3.14159265358979323846264338327950288419716939937510
结果表明虽然可以显示指定位数的小数部分,但是结果并不准确,超过16位有效数字后面的数字往往没有精确意义了。
2.1.3 复数¶
__复数__( (complex))由__实数__部分和__虚数__部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点数。 可以用__real__和__imag__分别获取复数的实部和虚部,用abs(a+bj)获得复数的模。 模=√(实部)²+(虚部)²
print((3.0 + 4.0j).real)
print((3.0 + 4.0j).imag)
print(abs(3.0 + 4.0j))
a = 3
b = 2
c = 6
# 3*x**2 + 2*x + 6 = 0
# 计算根
delta = b ** 2 - 4 * a * c
root1 = (-b + delta**0.5) / (2 * a)
root2 = (-b - delta**0.5) / (2 * a)
# 输出结果
print(f"方程的根为:{root1}") # 方程的根为:(-0.33333333333333326+1.3743685418725535j)
print(f"方程的根为:{root2}") # 方程的根为:(-0.3333333333333334-1.3743685418725535j)
# 获取实部和虚拟并分别保留2位小数,格式化输出
print("根1 = {:.2f} + {:.2f}j".format(root1.real, root1.imag))
print("根2 = {:.2f} + {:.2f}j".format(root2.real, root2.imag))