python 内置库科学计算、日期与时间处理

Python 内置库 - 科学计算

了解 math 函数

math 函数,python 提供的内置数学类函数库,包含了很多数学公式。
比如幂函数运算,三角函数,高等函数运算等。

math 函数操作

  • 数字常数
  • 数论与表示函数
  • 幂对数函数
  • 三角对数函数
  • 高等特殊函数

数字常量

常数 数学表示 描述
math.pi π 圆周率,值为3.1415926535…
math.e e 自然对数,值为2.7182818…
math.inf 正无穷大,负无穷-math.inf
math.nan NAN 非数字 NAN(Not a Number)

数论与表示函数

幂函数与对数函数

三角函数

高等特殊函数

实战练习

  • 常量
  • 数论与表示函数(ceil, floor)
  • 幂函数与对数函数 (pow(), sqrt())

实例

天天向上的力量

一年365天,以第1天的能力值为基数,记为1.0,
当努力学习时,能力值相比前一天提高1%,
当没有学习时能力值相比前一天下降1%。
(每天努力和每天放任,一年下来的能力值相差多少呢? )

import math

# print(math.pi)
# print(math.e)
# print(math.inf)
# print(-math.inf)
# print(math.nan)

# # 向上取整  >4.3 最小的整数  5
# print(math.ceil(4.3))
# # 向上取整  >-4.3 最小的整数  -4
# print(math.ceil(-4.3))
# # 向上取整  >-0.1 最小的整数  0
# print(math.ceil(-0.1))

# # 向下取整  <4.3 最大的整数 4
# print(math.floor(4.3))
#
# # 向下取整  <-4.3 最大的整数 -5
# print(math.floor(-4.3))

# print(math.pow(2, 10))
# print(math.sqrt(16))
print(math.pow((1.0 + 0.01), 365))
print(math.pow((1.0 - 0.01), 365))

Python 日期与时间处理

目录

  • 获取当前日期/获取特定时间
  • datetime 与 timestamp 时间戳互转
  • datetime 与 str 互转
  • 实战练习

工作中应用

  • 作为日志信息的内容输出
  • 计算某个功能的执行时间
  • 用日期命名一个日志文件的名称
  • 生成随机数(时间是不会重复的)

python 中处理时间的模块

  • time
  • datetime
  • calendar

常见的时间表示形式

  • 时间戳
  • 格式化的时间字符串

datetime 常用的类

  • datetime (from datetime import datetime) 时间日期相关
  • timedelta (from datetime import timedelta) 计算两个时间的时间差
  • timezone (from datetime import timezone) 时区相关

练习1 - 获取当前日期和时间

import datetime
now = datetime.datetime.now()

练习2 - 字符串与时间互转

s="2021-09-27 06:47:06"
# 将字符串 转换为datetime实例
s1=datetime.datetime.strptime(s,'%Y-%m-%d %H:%M:%S')

# 时间转成字符串
now = datetime.datetime.now()
result = now.strftime('%a, %b %d %H:%M')

# 参考链接:https://docs.python.org/3/library/datetime.html?highlight=strftime

练习3 - 时间戳 与时间互转

import datetime
mtimestamp = 1632725226.129461
# 将时间戳转成时间 
s = datetime.datetime.fromtimestamp(mtimestamp)
# 将时间转成时间戳
print(s.timestamp())
import datetime
# 当前日期时间
# nowtime = datetime.datetime.now()
# print(nowtime)
# print(nowtime.day)
# print(nowtime.month)
# print(nowtime.year)
# # 转成时间戳
# print(nowtime.timestamp())
#
# print(datetime.datetime(2021, 10, 10))

# s = "2021-09-27 06:47:06"
# # 将字符串 转换为datetime实例
# s1 = datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
# print(s1)
# print(type(s1))
# # 时间转成字符串
# result = s1.strftime('%a  %b  %d %H:%M')
# print(result)
mtimestamp = 1632725226.129461
# 时间戳-> 时间
s = datetime.datetime.fromtimestamp(mtimestamp)
print(s)
# 将时间->时间戳
print(s.timestamp())

实例

写一段代码,生成一个以时间命名的日志文件。
并向日志文件中写入日志数据。

import datetime
# 时间格式
now = datetime.datetime.now()
# 转成字符串
c_time = now.strftime("%Y%m%d_%H%M%S")
print(c_time)

log_name = c_time+'.log'
with open(log_name, 'w+',encoding='utf-8') as f :
    # datetime [level] line: 13 this is a log message
    message = f"{now} [info] line: 14 this is a log message"
    f.write(message)