python: Enum

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# encoding: utf-8
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2023.1 python 11
# Datetime  : 2023/7/3 14:53
# User      : geovindu
# Product   : PyCharm
# Project   : pythonProject
# File      : Weekday.py
# explain   : 学习
 
from enum import Enum, unique
 
 
@unique
class Weekday(Enum):
    """
    @unique装饰器可以帮助我们检查保证没有重复值。
    """
    Sun = 0 # Sun的value被设定为0
    """
    周日
    """
    Mon = 1
    """
    周一
    """
    Tue = 2
    """
    周二
    """
    Wed = 3
    """
    周三
    """
    Thu = 4
    """
    周四
    """
    Fri = 5
    """
    周五
    """
    Sat = 6
    """
    周六
    """

  

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# encoding: utf-8
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2023.1 python 11
# Datetime  : 2023/7/2 21:18
# User      : geovindu
# Product   : PyCharm
# Project   : pythonStudyDemo
# File      : CheckSort.py
# explain   : 学习
 
from enum import Enum
 
class CheckSort(Enum):
    """
    选择排序方式
 
    """
 
    Asc=1,
    """
    降序
    """
    Desc=2
    """
    升序
    """
 
 
 
 
 
# encoding: utf-8
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2023.1 python 11
# Datetime  : 2023/7/2 20:25
# User      : geovindu
# Product   : PyCharm
# Project   : pythonStudyDemo
# File      : TenSortAlgotrthms.py
# explain   : 学习 十种排序
 
from enum import Enum
import sortingalgorithms.CheckSort
import sortingalgorithms.duplicateChecking
class TenSortAlgotrthms(object):
    """
 
    """
    def bubbleSort(self,arr):
        """
        1。冒泡排序方法  从小至大 升序
        :param arr 整数数组  如 arr = [64, 34, 25, 12, 22, 11, 90]
        :param checkSort选择排序方式 Desc 降序 Asc 升序
        :return:
        """
        n = len(arr)
        swapped = False
        for i in range(n - 1):
            for j in range(0, n - i - 1):
                 if arr[j] > arr[j + 1]:
                    swapped = True
                    arr[j], arr[j + 1] = arr[j + 1], arr[j]
 
            if not swapped:
               return
 
    def bubbleSort(self,arr,checkSort):
        """
        1。冒泡排序方法  从小至大 升序
        :param arr 整数数组  如 arr = [64, 34, 25, 12, 22, 11, 90]
        :param checkSort选择排序方式 Desc 降序 Asc 升序
        :return:
        """
        n = len(arr)
 
        swapped = False
        if(checkSort.Asc==sortingalgorithms.CheckSort.CheckSort.Desc):
            for i in range(n - 1):
                for j in range(0, n - i - 1):
                    if arr[j] > arr[j + 1]:
                        swapped = True
                        arr[j], arr[j + 1] = arr[j + 1], arr[j]
 
                if not swapped:
                    return
 
        else:
            for i in range(n - 1):
                for j in range(0, n - i - 1):
                    if arr[j] < arr[j + 1]:
                        swapped = True
                        arr[j], arr[j + 1] = arr[j + 1], arr[j]
 
                if not swapped:
                    return
 
 
 
    def bubbleSortIndex(self,arr,checkSort,eqLeter:int):
        """
        1。冒泡排序方法  从小至大 升序
        :param arr 整数数组  如 arr = [64, 34, 25, 12, 22, 11, 90]
        :param checkSort选择排序方式 Desc 降序 Asc 升序
        :param eqLeter 找查指定的数字的下标
        :return:返回下标 元组
        """
        n = len(arr)
        fin = sortingalgorithms.duplicateChecking.DuplicateChecking()
        index = fin.findindex(arr, eqLeter)
        #print("index",index,eqLeter)
        swapped = False
        if(checkSort.Asc==sortingalgorithms.CheckSort.CheckSort.Desc):
            for i in range(n - 1):
                for j in range(0, n - i - 1):
                    if arr[j] > arr[j + 1]:
                        swapped = True
                        arr[j], arr[j + 1] = arr[j + 1], arr[j]
 
                if not swapped:
                    return index
 
 
        else:
            for i in range(n - 1):
                for j in range(0, n - i - 1):
                    if arr[j] < arr[j + 1]:
                        swapped = True
                        arr[j], arr[j + 1] = arr[j + 1], arr[j]
 
                if not swapped:
                    return index

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# encoding: utf-8
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2023.1 python 11
# Datetime  : 2023/7/2 20:25
# User      : geovindu
# Product   : PyCharm
# Project   : pythonStudyDemo
# File      : TenSortAlgotrthms.py
# explain   : 学习 十种排序
 
from enum import Enum
import sortingalgorithms.CheckSort
import sortingalgorithms.duplicateChecking
class TenSortAlgotrthms(object):
    """
 
    """
    def bubbleSort(self,arr):
        """
        1。冒泡排序方法  从小至大 升序
        :param arr 整数数组  如 arr = [64, 34, 25, 12, 22, 11, 90]
        :return:
        """
        n = len(arr)
        swapped = False
        for i in range(n - 1):
            for j in range(0, n - i - 1):
                 if arr[j] > arr[j + 1]:
                    swapped = True
                    arr[j], arr[j + 1] = arr[j + 1], arr[j]
 
            if not swapped:
               return
 
    def bubbleSort(self,arr,checkSort=None):
        """
        1。冒泡排序方法  从小至大 升序
        :param arr 整数数组  如 arr = [64, 34, 25, 12, 22, 11, 90]
        :param checkSort选择排序方式 Desc 降序 Asc 升序
        :return:
        """
        n = len(arr)
 
        swapped = False
        if(checkSort!=None):
            if(checkSort.Asc==sortingalgorithms.CheckSort.CheckSort.Desc):
                for i in range(n - 1):
                    for j in range(0, n - i - 1):
                        if arr[j] > arr[j + 1]:
                            swapped = True
                            arr[j], arr[j + 1] = arr[j + 1], arr[j]
 
                    if not swapped:
                        return
 
            else:
                for i in range(n - 1):
                    for j in range(0, n - i - 1):
                        if arr[j] < arr[j + 1]:
                            swapped = True
                            arr[j], arr[j + 1] = arr[j + 1], arr[j]
 
                    if not swapped:
                        return
        else:
            for i in range(n - 1):
                for j in range(0, n - i - 1):
                    if arr[j] > arr[j + 1]:
                        swapped = True
                        arr[j], arr[j + 1] = arr[j + 1], arr[j]
 
                if not swapped:
                    return
 
 
 
    def bubbleSortIndex(self, arr, checkSort, eqLeter : int):
        """
        1。冒泡排序方法  从小至大 升序
        :param arr 整数数组  如 arr = [64, 34, 25, 12, 22, 11, 90]
        :param checkSort选择排序方式 Desc 降序 Asc 升序
        :param eqLeter 找查指定的数字的下标
        :return:返回下标 元组
        """
        n = len(arr)
        fin = sortingalgorithms.duplicateChecking.DuplicateChecking()
        index = fin.findindex(arr, eqLeter)
        # print("index" ,index ,eqLeter)
        swapped = False
        if(checkSort.Asc == sortingalgorithms.CheckSort.CheckSort.Desc):
            for i in range(n - 1):
                for j in range(0, n - i - 1):
                    if arr[j] > arr[j + 1]:
                        swapped = True
                        arr[j], arr[j + 1] = arr[j + 1], arr[j]
 
                if not swapped:
                    return index
 
 
        else:
            for i in range(n - 1):
                for j in range(0, n - i - 1):
                    if arr[j] < arr[j + 1]:
                        swapped = True
                        arr[j], arr[j + 1] = arr[j + 1], arr[j]
 
                if not swapped:
                    return index

  

 

调用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 排序
arrs= [64, 34, 25, 2, 22, 11, 90,88,34]
fin=sortingalgorithms.duplicateChecking.DuplicateChecking()
qc=34
inde=fin.findindex(arrs,qc)
print(f"顺序查询数组中{qc}查到下标是:",inde)
for ud in inde:
    print(ud+1)
 
sort=sortingalgorithms.TenSortAlgotrthms.TenSortAlgotrthms()
sort.bubbleSort(arrs,sortingalgorithms.CheckSort.CheckSort.Desc)
print("冒泡排序:")
for i in range(len(arrs)):
    print("% d" % arrs[i], end=" ")
q=5
duindex=sort.bubbleSortIndex(arrs, sortingalgorithms.CheckSort.CheckSort.Desc,q)
print(f"\n{q}下标是:",duindex)

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from collections.abc import Iterable
from functools import reduce
 
 
 
 
 
 
def triangles():
    """
 
    :return:
    """
 
    L = [1]
    yield L
    while True:
        L = [v + w for v, w in zip([0] + L, L + [0])]
        yield L
 
def notempty(s):
    """
    过虑空
    :param s:
    :return:
    """
    return s and s.strip()
 
 
   for i, value in enumerate(['A', 'B', 'C']):
        print(i, value) #for循环中同时迭代索引和元素本身
 
    for i, value in enumerate([35, 45, 55]):
        print(i, value) #for循环中同时迭代索引和元素本身
 
    #列表生成式即List Comprehensions
    n = 0
    results = []
    for t in triangles():
        results.append(t)
        n = n + 1
        if n == 10:
            break
 
    for t in results:
        print(t)
 
 
    #Python内建的filter()函数用于过滤序列
    list(filter(notempty, ['A', '', 'B', None, 'C', '  ']))

  

 

 

posted @   ®Geovin Du Dream Park™  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2010-07-02 SQL server查询数据类型为ntext是空或NULL值
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示