← 返回星图
· 共 1,501 字

day2

本来想写个鸡尾酒排序法的,但是没有考虑左右边界的收缩,目前懒得改了

# 循环嵌套             想要写好嵌套循环重点在于搞清楚外部循环了多少轮,内部多少轮,一个对应行数,一个对应列数
for i in range(1,10):
    for j in range(1,i+1):
        print(f”{j}*{i}={i*j}”,end=”  “)
    print()
def self_sort(lst):
    data = lst[:]      # 如果直接将列表list赋值给data它们两会等价
    for i in range(len(data)-1):
        counter = 0
        for j in range(len(data)-1-i):
            if data[j]>data[j+1]:
                data[j],data[j+1] = data[j+1],data[j]
                counter = True
        if not counter:
            return data
list=[1,5,6,8,5,9,9,5,2,3,4]
print(self_sort(list))
def self_sorted(ls):
    data = ls[:]
    for i in range(len(data)-1):
        counter=False
        if i%2 != 0:
            for j in range(len(data)-1-i):
                if data[j]>data[j+1]:
                    data[j],data[j+1]=data[j+1],data[j]
                    counter = True
        else:
            for j in range(len(data)-i-2,-1,-1):
                if data[j]>data[j+1]:
                    data[j],data[j+1]=data[j+1],data[j]
                    counter = True
        if not counter:
            return data
ls=[9,5,6,8,4,5,41,11,2,2,5,8,5,7,4,7,4,4,1]
print(self_sorted(ls))
# 装饰器及语法糖
# 装饰器就是用来给函数提供额外功能的函数,就比如下面例子中的download函数,其本身是不需要计时功能的,所以用装饰器来加
# 装饰器的返回值是一个函数,这个函数不仅包含被装饰函数的全部功能,还包含其他额外功能
import time
import random
def record_time(func):
    def wrapped(*args,**kwargs):      # *args是用来接收普通变量的,**kwargs是用来接收键值对的,虽然本题中并不需要,这是模版写法
        start = time.time()     # 记录开始时间
        ret_value=func(*args,**kwargs)         # 调用原函数并记录返回值(如果有的话)
        end = time.time()       # 记录结束时间
        print(f”{end-start:.3f}”)       # :.3f表示保留三位小数
        return ret_value       # 返回返回值,这道题中的download并没有返回值,所以在这道题中这个功能可以去掉
    return wrapped    # 写函数先写返回值
def download():
    print(“开始下载文件一”)
    time.sleep(random.random()*3+2)      # random.random()生成一个0到1的随机小数
    print(“文件一下载完成!”)
b=record_time(download)
b()
# 语法糖
@record_time     # 相当于upload=record_time(upload)
def upload():
    print(“开始上传文件2”)
    time.sleep(random.random()*3+2)      # random.random()生成一个0到1的随机小数
    print(“文件2上传完成!”)
LEAVE A LITTLE LIGHT

星光来信 0

留下一点想法