科协python讲座摸鱼

py现在对我最大的作用可能是解决一些离谱的算法题,一些数据结构之类的
比如说寒假学高精度的时候接触到了py的大整数
听讲座时摸鱼来玩一玩:

排序:

冒泡排序:

def bubble_sort(data, flag) :
    if not flag:
        for i in range(len(data) - 1):
            for j in range(len(data) - 1 - i) :
                if data[j] > data[j + 1] :
                    data[j], data[j + 1] = data[j + 1], data[j]
        return data
    else :
        for i in range(len(data) - 1):
            for j in range(len(data) - 1 - i) :
                if data[j] < data[j + 1] :
                    data[j], data[j + 1] = data[j + 1], data[j]
        return data

运行时候输入元组:

a = [1, 2, 3, 4, 5, 6]
bubble_sort(a, 0)
#[1, 2, 3, 4, 5, 6]
a = [1, 2, 3, 4, 5, 6]
bubble_sort(a, 1)
#[6, 5, 4, 3, 2, 1]`

选择排序

def selection_sort(data, reverse=False):
    if not reverse:
        for i in range(len(data)-1):
            min_index = i
            for j in range(i+1, len(data)):
                if data[j] < data[min_index]:
                    min_index = j
            data[i], data[min_index] = data[min_index], data[i]
        return data
    else:
        for i in range(len(data) - 1):
            min_index = i
            for j in range(i+1, len(data)):
                if data[j] > data[min_index]:
                    min_index = j
            data[i], data[min_index] = data[min_index], data[i]
        return data

插入排序:

def insert_sort(data, reverse=False):
    if not reverse:
        for i in range(1, len(data)):
            key = data[i]
            j = i - 1
            while j >= 0:
                if data[j] > key:
                    data[j+1] = data[j]
                    data[j] = key
                j -= 1
        return data
    else:
        for i in range(1, len(data)):
            key = data[i]
            j = i - 1
            while j >= 0:
                if data[j] < key:
                    data[j+1] = data[j]
                    data[j] = key
                j -= 1
        return data

快排

def quick_sort(data):
    if not data:
        return data
    first = data[0]
    left = quick_sort([l for l in data[1:] if l < first])
    right = quick_sort([r for r in data[1:] if r >= first])
    return left + [first] + right

大整数

a = pow(2, 100)
print(a)
#1267650600228229401496703205376

c梦寐以求的东西了属于是

讲座作业

随机掷色子:

from random import randint
sum = 0
cnt = 0
a = [0, 0, 0, 0, 0, 0]
while (cnt <= 100 and sum <= 300) :
    b = randint(1, 6)
    a[b - 1] += 1
    sum += b
    cnt += 1
print("共投掷了{}次".format(cnt))
for i in range(6) : 
    print("点数{}出现的次数为{}".format(i + 1, a[i]))
    print('\n')

最大前缀字串:

s = input("输入一个字符串,gkd :")
a = s.split(" ")
length = len(a)
minn = 100000
ans = list()
for i in range(length) :
    if len(a[i]) < minn:
        minn = len(a[i])
for i in range(minn) :
    temp = a[0][i]
    flag = 1
    for j in range(length) : 
        if a[j][i] != temp:
            flag = 0
    if flag == 1:
        ans.append(temp)
    else :
        break
if len(ans) == 0:
    print("NOT FOUND!")
else :
    for i in ans:
        print(i, end = '')

好久没用python了,写程序一股c的味道,不太好。

posted @ 2022-05-13 19:28  misasteria  阅读(45)  评论(0编辑  收藏  举报