python: Enum

 

# 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
    """
    周六
    """

  

 

# 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

  

# 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

  

 

调用:

    # 排序
    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)

  

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 @ 2023-07-02 22:56  ®Geovin Du Dream Park™  阅读(29)  评论(0)    收藏  举报