天天看點

Python常見工具使用

一、Math

1.1 概述

Math為Python提供的用于對浮點數進行運算的子產品,其與Java中的java.util.Math類相似。要想使用math對應的函數,就必須先通過如下語句進行導入:

import math           

1.2 常量

對于math子產品而言,其提供了一些常量來表示特殊值,下面為對應的常用值:

常量 描述
math.e 傳回歐拉數 (2.7182...)
math.inf 傳回正無窮大浮點數
math.nan 傳回一個浮點值 NaN (not a number)
math.pi π 一般指圓周率。 圓周率 PI (3.1415...)
math.tau 數學常數 τ = 6.283185...,精确到可用精度。Tau 是一個圓周常數,等于 2π,圓的周長與半徑之比。

下面給出一個例子來列印這幾個常用的特殊值:

import math

print(f"歐拉數:{math.e}")
print(f"正無窮浮點數:{math.inf}")
print(f"非數:{math.nan}")
print(f"圓周率:{math.pi}")
print(f"圓周常數(約為2π):{math.tau}")           

執行結果如下:

Python常見工具使用

1.3 常用方法

1.3.1 舍入方法

對于舍入類的方法有:ceil、floor兩個,其中,ceil表示向上取整,floor表示向下取整。當然,Python也提供了四舍五入的方法:round。隻不過該方法屬于通用方法,下面給出對應的例子:

import math

# ceil
print(f"3.4向上取整為:{math.ceil(3.4)}")
print(f"-3.4向上取整為:{math.ceil(-3.4)}")

# floor
print(f"3.4向下取整為:{math.floor(3.4)}")
print(f"-3.4向下取整為:{math.floor(-3.4)}")

# round
print(f"3.4四舍五入為:{round(3.4)}")
print(f"-3.4四舍五入為:{round(-3.4)}")
print(f"3.5四舍五入為:{round(3.5)}")
print(f"-3.5四舍五入為:{round(-3.5)}")           

執行結果如下:

Python常見工具使用

1.3.2 求方

與求方相關的函數有:pow、sqrt和cbrt。其中,pow函數用于求某個數的n次方,sqrt用于求某個數的平方根,cbrt用于求某個數的立方根。下面給出對應的示例:

import math

# pow
print(f"3的3次方為:{math.pow(3, 3)}")

# sqrt
print(f"4的平方根為:{math.sqrt(4)}")

# cbrt
print(f"27的立方根是:{math.cbrt(27)}")

# log(x, base)
print(f"log以5為底25的對數是:{math.log(25, 5)}")

# log2
print(f"log以2為底16的對數是:{math.log2(16)}")

# log10
print(f"log以10為底1000的對數是:{math.log10(1000)}")           

執行結果如下:

Python常見工具使用

1.3.3 常見數學運算

Python提供了一些常見的數學運算,分别為:factorial(階乘)、fsum(求和)、gcd(最大公約數)、prod(求積)等。下面給出對應的例子:

import math

l = [1, 2, 3, 4]
print(f"4的階乘為:{math.factorial(4)}")
print(f"{l}的所有數之和為:{math.fsum(l)}")
print(f"7求餘3結果為:{math.fmod(7, 3)}")
print(f"8和12的公約數為:{math.gcd(8, 12)}")
print(f"-3的絕對值為:{math.fabs(-3)}")
print(f"{l}的所有數之積為:{math.prod([1, 2, 3, 4])}")           

執行結果為:

Python常見工具使用

1.3.4 弧度和角度互轉

Python提供了角度和弧度互轉的函數,分别為:radians和degree。其中,radiansb用于将弧度值轉為角度值,而degree則用于将角度制轉為弧度值。下面給出對應的示例:

import math

# 弧度轉角度
print(f"π 為{math.degrees(math.pi)} 度")
print(f"π/2 為 {math.degrees(math.pi / 2)} 度")
print(f"π/4 為 {math.degrees(math.pi / 4)} 度")

# 角度轉弧度
print(f"45度為:{math.radians(45) / math.pi} π")
print(f"90度為:{math.radians(90) / math.pi} π")
print(f"180度為:{math.radians(180) / math.pi} π")           

執行結果如下:

Python常見工具使用

1.3.5 三角函數

Python也提供了三角函數運算的函數,如:正弦、餘弦及正切等,其入參為弧度值,而非角度值。但由于Python的math子產品是使用浮點數進行運算,是以得出的值并不會如數學推斷的精準。下面給出對應的例子:

import math

# 正弦
print(f"30度的正弦值為:{math.sin(math.radians(30))}")
# 餘弦
print(f"60度的餘弦值為:{math.cos(math.radians(60))}")
# 正切值
print(f"45度的正切值為:{math.tan(math.radians(45))}")
# 反正弦值
print(f"30度的反正弦值為:{math.asin(math.radians(30))}")
# 反餘弦值
print(f"30度的反餘弦值為:{math.acos(math.radians(30))}")
# 反正切值
print(f"45度的反正切值為:{math.atan(math.radians(45))}")           

執行結果如下:

Python常見工具使用

1.3.6 高階函數

Python還提供了一些高階函數,如:dist、gamma、hypot。其中,dist函數用于計算距離,gamama函數則用于傳回伽馬函數在x值處的自然對數,hypot函數用于傳回歐幾裡得範數,其結果相當于sqrt(sum(x ** 2 for x in coordinates))。

下面給出對應的示例:

import math

# dist計算距離
print(f"(1, 1)和(4, 5)之間的距離為:{math.dist((1, 1), (4, 5))}")
# gamama函數
print(f"3在伽瑪函數中對應的自然數為:{math.gamma(3)}")
# 歐幾裡得函數
print(f"邊為3,4, 5對應的歐幾裡德數為:{math.hypot(3, 4, 5)}")           

執行結果如下:

Python常見工具使用

二、Random

2.1 概述

random子產品為Python提供的用于生成随機數的子產品。與math子產品一樣,在使用前需先使用import語句進行導入,如下:

import random           

下面給出對應的示例:

import random

print(f"生成0-1之間的随機數為:{random.random()}")           

執行結果如下:

Python常見工具使用

2.2 常用方法

2.2.1 seed

seed函數用于生成随機數的種子,可在調用随機子產品的函數前調用該函數。下面給出對應的例子:

import random

random.seed()
print(f"使用預設的種子生成随機數:{random.random()}")
print(f"使用預設的種子生成随機數:{random.random()}")

random.seed(10)
print(f"使用整數10種子生成的随機數:{random.random()}")
random.seed(10)
print(f"使用整數10種子生成的随機數:{random.random()}")

random.seed("hello", 2)
print(f"使用字元串種子生成随機數:{random.random()}")           

執行結果如下:

Python常見工具使用

2.2.2 randrange

randrange函數的入參為:start、stop和step。用于傳回從start到stop間步長為step的随機元素。下面給出對應的示例:

import random

# 傳回5個 1-10之間的随機數
i = 0
while i < 5:
    print(f"傳回1-10的随機數:{random.randrange(1, 10)}")
    i += 1

# 傳回5個1-10之間且步長為2的随機數
i = 0
while i < 5:
    print(f"傳回1-10之間且步長為2的随機數:{random.randrange(1, 10, 2)}")
    i += 1           

執行結果如下:

Python常見工具使用

2.2.3 randint

randint函數用于傳回從a到b之間的整數,下面是對應的示例:

import random

# 傳回五個1到10之間的整數
i = 0
while i < 5:
    print(f"1到10之間的整數為:{random.randint(1, 10)}")
    i += 1           

執行結果為:

Python常見工具使用

2.2.4 choice

choice函數用于随機傳回序列中的一個元素,若序列為空,則會抛出異常。下面給出對應的示例:

import random

s = [1, 2, 3, 4, 5]
print(f"随機傳回的數數為:{random.choice(s)}")

t = ("Tom", "Jerry", "Spike", "Tuffy", "Tyke")
print(f"随機傳回的字元串為:{random.choice(t)}")           

執行結果如下:

Python常見工具使用

三、時間相關

對于Python 而言,其通過 time 和 calendar 子產品來擷取格式化的日期和時間。對于計算機中的時間而言,會使用距時間元年(1970年1月1日0時0分0秒)經過多久來表示。對于Python是用距時間原點經過多少秒的浮點數來表示,而Java則是使用距時間原點所經過多少毫秒的長整型來表示。

下面通過 time.time() 函數來擷取目前的時間戳,對應示例如下:

import time

ticks = time.time()
print(f"目前的時間為:{ticks}")           

執行結果如下:

Python常見工具使用

3.1 時間元組

所謂時間元組其本質是一個元組,隻不過其是由9個數字組成的元組,每個數字都有着特殊的含義,下面通過一個表來說一下各個數字的含義:

序号 字段
年,用4位數表示 2023
1 1到12
2 1到31
3 小時 0到23
4 分鐘 0到59
5 0到60或61(61為閏秒)
6 一周的第幾日 0到6(0是周一)
7 一年的第幾日 1到366(儒略曆)
8 夏令時 -1, 0, 1, -1 ,決定是否為夏令時辨別

當然,該元組還具有若幹屬性,如下:

序号 屬性
tm_year 2023
1 tm_mon 1到12
2 tm_mday 1到31
3 tm_hour 0到23
4 tm_min 0到59
5 tm_sec 0到60或61(61為閏秒)
6 tm_wday 0到6(0是周一)
7 tm_day 1到366(儒略曆)
8 tm_isdst -1, 0, 1, -1 ,決定是否為夏令時辨別

3.2 常見用法

下面介紹時間函數的日常用法。

3.2.1 擷取目前時間

擷取目前時間隻需将 time.time() 函數擷取到的浮點數傳遞給localtime 類即可。下面是對應的示例:

import time

localtime = time.localtime(time.time())
print(f"目前時間為:{localtime}")           

執行結果如下:

Python常見工具使用

當然,也可不傳入指定的秒數,此時會預設擷取目前時間。隻不過傳入時,會擷取指定時間戳對應的日期。下面為不傳時間戳的示例:

import time

print(f"目前時間為:{time.localtime()}")           

執行結果為:

Python常見工具使用

3.2.2 擷取正常格式化時間

擷取格式化日期的方式有很多種,最正常的方式是使用asctime() 函數,下面是對應的示例:

import time

localtime = time.asctime(time.localtime(time.time()))
print(f"目前時間為:{localtime}")           

執行結果如下:

Python常見工具使用

3.2.3 擷取格式化日期

擷取格式化日期可通過 strftime 方法來實作,下面給出對應的示例:

import time

# 格式化為 2023-01-01 00:00:00 的形式
print(f"目前日期為:{time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())}")

# 格式化為 Sat Jan 01 00:00:00 2023 的形式
print(f"目前時間為:{time.strftime('%a %b %d %H:%M:%S %Y', time.localtime())}")

# 将格式化字元串轉換為時間戳
t = "Sat Apr 08 09:00:10 2023"
print(f"目前時間對應的時間戳為:{time.mktime(time.strptime(t, '%a %b %d %H:%M:%S %Y'))}")           

執行結果如下:

Python常見工具使用

下面來簡單說一下常見的格式化日期符号:

符号 含義
%y 兩位數的年份,可選值為00-99
%Y 四位數的年份,可選值為:0000-9999
%m 月份,可選值為:01-12
%d 月内的第一天,可選值為:0-31
%H 24小時制的小時數,可選值為:0-24
%I 12小時制的小時數,可選值為:01-12
%M 分鐘數,可選值為:00-59
%S 秒數,可選值為:00-59
%a 本地簡化的星期名稱
%A 本地完整的月份名稱
%b 本地簡化的月份名稱
%B 本地完整的月份名稱
%c 本地對應的日期表示和時間表示
%j 年内的第幾天,可選值為:001-366
%p 本地的A.M 或 P.M的等價符
%U 一年内的星期數,以星期天為星期的開始,可選值為:00-53
%w 星期内的第幾天,以星期天為開始,可選值為:0-6
%W 一年内的星期數,以星期一為開始,可選值為:00-53
%x 本地對應的日期表示
%X 本地對應的時間表示
%Z 目前時區的名稱
%% %号本身

3.2.4 擷取某月的月曆

在 python 中還提供了擷取年曆或月曆的方法。下面給出列印月曆的示例:

import calendar

cal = calendar.month(2023, 4)
print("以下為2023年4月的月曆:")
print(cal)           

執行結果如下:

Python常見工具使用