科协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的味道,不太好。