Python3 OS模块初级

os模块

os.system('command')

执行shell命令

# system 调用系统命令
res = os.system("ping www.baidu.com")
print(res)
res = os.system("ipconfig")
print(res)

os.name

输出字符串指示正在使用的平台。如果是window 则用'nt'表示,对于Linux/Unix用户,它是'posix'。

result = os.name
print(result)

os.getcwd()

函数得到当前工作目录(就是你的进程所工作的目录),即当前Python脚本工作的目录路径。

运行目录:执行程序的路径

工作目录:程序运行时,程序中我们要操作的一系列相对路径(相对路径需要参照),以运行时目录为参照。并且可在程序运行时更改

#返回当前工作的路径
result = os.getcwd()
print(result)

os.listdir()

返回指定目录下的所有文件和目录名的一个列表但是并没有列出来什么是目录,什么是文件。

result = os.listdir("D:\\Languages\\Firststage\\day08")
print(result)

result = os.listdir("../")
print(result)
# py 普通代码文件
# pyc 临时文件,解释
# pyw 图形化文件

os.mkdir('dir_name')

创建单级目录

# 只能创建一层
os.mkdir("../day10000")

os.makedirs('dir_name')

创建多级目录

#os.makedirs('a/b/c')
#递归创建目录
os.makedirs("day12/day13/day14")
# 创建多层
os.mkdir("../day10000/day123")

os.remove('file_name')

删除指定文件

os.remove("../day10000/day123/111.py")

os.rmdir('dir_name')

删除单级空目录

os.rmdir("day10000")

os.removedirs('dir_name')

逐级删除空目录

os.removedirs("../day10000/day123")

os.chdir('file_path')

改变工作目录

result = os.listdir("../")
print(result)
print(os.getcwd())
os.chdir("../day10000")
print(os.getcwd())

os.rename

更改文件名

#rename 先复制原来的文件,然后改名,最后删除原文件
os.rename("../day10000/day123/111.py","../day10000/day123/222.py")

os.walk

'''
os.walk(top, topdown=True, onerror=None, followlinks=False)

top -- 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。

root 所指的是当前正在遍历的这个文件夹的本身的地址
dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
topdown --可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。

onerror -- 可选, 需要一个 callable 对象,当 walk 需要异常时,会调用。

followlinks -- 可选, 如果为 True,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录(默认关闭)。

这个函数会返回三个返回值,(dirpath,dirnames,filenames)
dirpath:目录的路径
dirnames:你要查找目录下面所有的目录名
filenames:你要查找目录下面所有的文件名
os.sep 是当前路径分隔符号
我们使用这个os.walk也可以起到遍历一个目录的效果。
'''
result = os.walk("../")
for dirpath,dirname,filename in result:
    print(filename)

os.path

os.path.abspath('file_name')

返回file_name的绝对路径

result = os.path.abspath("111.py")
print(result)

os.path.split('file_path')

返回file_path分隔成目录和文件名,并用一个元组返回

result = os.path.split("D:\Languages\Firststage\day08\\1、字典的定义.py")
print(result)

os.path.exists('file_path')

如果file_path存在,则返回True,反之返回False

result = os.path.exists("D:\Languages\Firststage\day08")
print(result)

os.path.join('file_path','file_name')

链接目录与文件名或目录

result = os.path.join("D:\Languages\Firststage","day08")
print(result)

os.path.isdir('name')

判断是否为目录

result = os.path.isdir("../111.py")
print(result)

os.path.isfile('name')

判断是否为文件

result = os.path.isfile("../day10000")
print(result)

os.path.getsize('path')

返回文件大小,如果文件不存在,就返回错误

result = os.path.getsize("D:\Languages\Firststage\day08")
print(result)


文件操作


open()语法

#功能:打开或者创建一个文件
#格式:open('文件路径','打开模式')
#      open(file_path,mode)
#返回值:文件io对象

语法 file_object = open(path,method)

  • path 文件的路径和名称 格式为字符串

  • method 文件打开的权限 格式为字符串

    • w(write) 写权限 如果没有这个文件 自动创建一个 如果有这个文件 那么将会覆盖掉之前的内容。

      • # 打开文件
        f = open("user.txt","w")
        # 写内容
        f.write("this is a test")
        # 关闭文件
        f.close()
        
  f = open("user.txt","w",encoding="utf-8")
  #write()  向对应的文件中写入文件
  f.write("十一假期快乐!")
  #close()  关闭文件
  f.close()
  ```
  • a(append) 追加写 如果没有这个文件 自动创建一个 如果有这个文件 那么就在文件末尾进行追加

    • # 打开文件
      f = open("user.txt","a")
      # 写内容
      f.write("this is a test")
      # 关闭文件
      f.close()
      
      f = open("user.txt","a",encoding="utf-8")
      f.write("十一假期快乐!")
      f.close()
      
      f = open("user.txt","a",encoding="utf-8")
      f.write("十一假期快乐!")
      # 写操作   是将要写入的内容先写到缓冲区
          # 当程序运行结束        自动写入
          # 当文件关闭            自动写入
          # 当缓冲区被写满        自动写入
          # flush()刷新缓冲区     立即写入
      f.flush()
      while True:
          pass
      
  • r (read)读操作

    • f = open("user.txt","r")
      # 读取文件 保存到变量
      content = f.read()
      print(content,type(content))
      
  f = open("user.txt","r",encoding="utf-8")
  # read() 读取全文
  content = f.read()
  print(content)

  #readline()  读一行
  contents = f.readline()
  print(contents)

  #readlines() 以行为单位读取全文
  result = f.readlines()
  print(result)
  f.close()
  ```
  • w+ 读写

    • # 如果文件存在  会覆盖之前的内容,不存在就创建
      f = open("user.txt","w+")
      f.write("this is a test")
      f.seek(0,0)
      content = f.readlines()
      print(content)
      f.close()
      
  f = open("user.txt","w+",encoding="utf-8")
  f.write("十一假期快乐!")
  f.seek(0,0)
  content = f.readlines()
  print(content)
  f.close()
  ```
  • a+ 读写

    • # 如果文件存在  在末尾追加内容,不存在就创建
      f = open("user.txt","a+")
      f.write("this is a test")
      f.seek(0,0)
      content = f.readlines()
      print(content)
      f.close()
      
  f = open("user.txt","a+",encoding="utf-8")
  f.write("十一假期快乐!")
  f.seek(0,0)
  content = f.readlines()
  print(content)
  f.close()
  ```
  • r+ 读写

    • # 如果文件存在  在从头开始覆盖内容,不存在就报错,不创建新文件
      f = open("user.txt","r+")
      f.write("this is a test")
      f.seek(0,0)
      content = f.readlines()
      print(content)
      f.close()
      
  f = open("user.txt","r+",encoding="utf-8")
  f.write("十一假期快乐!")
  f.seek(0,0)
  content = f.readlines()
  print(content)
  f.close()
  ```
  • wb 二进制替换写入

    • f = open("user.txt","wb")
      f.write("wwwpythonorg".encode("utf-8"))
      f.close()
      
      f = open("user.txt","wb")
      str1 = "大金链子小手表"
      # encode() 对数据进行指定格式的编码
      # f.write("大金链子小手表".encode("utf-8"))
      f.write(str1.encode("utf-8"))
      f.close()
      
  • ab 二进制追加写入

    • f = open("user.txt","ab")
      f.write("wwwpythonorg".encode("utf-8"))
      f.close()
      
      f = open("user.txt","ab")
      str1 = "大金链子小手表"
      # encode() 对数据进行指定格式的编码
      # f.write("大金链子小手表".encode("utf-8"))
      f.write(str1.encode("utf-8"))
      f.close()
      
  • rb二进制读取

    • f = open("user.txt","rb")
      # decode() 对数据进行指定格式的解码
      content = f.read().decode("utf-8")
      print(content)
      
  • seek()调整指针位置

    •     #seek(whence,mode)  mode代表参考位置  whence代表偏移量
              # mode= 0    以开头为参考位置  3.x版本只能等于0
      

with open()语法

# with语法不用手动关闭文件,他会自动关闭文件
with open("user.txt","a+") as f:
    #此处的文件对象f 是一个局部变量
    # tell() 告诉我们当前光标在什么位置
    content = f.read()
    print(f.tell())
    f.seek(10,0)
    print(f.tell())
    result = f.readline()
    print(result)

pickle 模块

"""
1、便于储存  不在存储在内存
2、便于传输  网络传输需要把数据转换为字节流
"""
import pickle
# 操作文件
# dump
# load
# 操作数据
# dumps
# loads

f = open("user.txt","wb")
var = "this is a test"
# 当我们用二进制打开的时候   不再进行编码   而是用Pickle模块直接进行编码
pickle.dump(var,f)
f.close()

f = open("user.txt","rb")
content = pickle.load(f)
# 读取文件的时候   读取出来的内容可以直接用Pickle.load进行解码
print(content)
f.close()

list1 = [1,2,3,4]
res = pickle.dumps(list1)
print(res)

res1 = pickle.loads(res)
print(res1)

练习


注册

'''
用户注册  
用户输入一个用户名一个密码  
验证用户名是否已经存在  
如果存在  重新注册   
如果不存在  将注册信息写入文件
'''
#自己的方法
file_1 = open('users.txt', 'a+', encoding='utf-8')
file_1.seek(0,0)

#定义存放用户名,密码的 字典
users_info = {}

#逐行读取用户名,密码,并存储到字典中
for line in file_1.readlines():
    users = line.strip().split(',')
    #去掉\n  并以,号为切分点
    users_info[users[0]]=users[1]
# print(users_info)

#注册
while True:
    username = input('请输入用户名:').strip()
    password = input('请输入密码:').strip()
    rpassword = input('请确认密码:').strip()
    if username != "" and " " not in username and password != "" and " " not in password and rpassword != "" and " " not in rpassword :
        if username in users_info.keys():
            print('用户名已存在,请重新注册')
            continue
        else:
            if password != rpassword:
                print('两次输入密码不一致,请重新注册!')
                continue
            else:
                file_1.write(username+','+password + '\n')
                print('%s,注册成功!' % username)
                break
    else:
        print('用户名密码不规范')
file_1.close()
#老师讲的
f = open("user.txt","a+")
a = 0
while a == 0:
    # 用户输入一个用户名
    name = input("请输入一个用户名:")
    # 判断用户名不能为空  并且  用户名中不能包含空格
    if name != "" and " " not in name:
        # 定义一个空列表  用来存储所有的用户名
        name_list = []
        # 把光标移动到开头位置
        f.seek(0,0)
        # 读取文件中的所有内容
        content = f.readlines()
        # 遍历文件中的所有内容
        for var in content:
            # 切分账号和密码   取出账号
            account = var.split(":")[0]
            # 把所有且分出来的账号添加到用户列表
            name_list.append(account)
        # 检测用户名是否被注册
        if name not in name_list:
            while True:
                # 用户输入一个密码
                pwd = input("请输入您的密码:")
                # 判断密码不能为空   并且  密码中不能包含空格
                if pwd != "" and " " not in pwd:
                    pwd2 = input("请确认您的密码:")
                    # 判断两次密码是否一致
                    if pwd == pwd2:
                        # 如果一致 写入文件
                        f.write("%s:%s\n"%(name,pwd))
                        print("注册成功!")
                        a = 1
                        break
                    else:
                        print("两次密码不一致,请重新输入!")
        else:
            print("用户名已被占用,请重新注册!")
    else:
        print("用户名中包含非法字符!")
f.close()

#直接把字典存入文件
import pickle
import os
#先判断有没有存储的文件
if os.path.exists("user.txt"):
    f = open("user.txt", "rb")
    users_dict = pickle.load(f)
else:
    users_dict = {}
a = 0
while a == 0:
    # 用户输入一个用户名
    name = input("请输入一个用户名:")

    # 判断用户名不能为空  并且  用户名中不能包含空格
    if name != "" and " " not in name:

        if name not in users_dict.keys():
            while True:
                # 用户输入一个密码
                pwd = input("请输入您的密码:")
                # 判断密码不能为空   并且  密码中不能包含空格
                if pwd != "" and " " not in pwd:
                    pwd2 = input("请确认您的密码:")
                    # 判断两次密码是否一致
                    if pwd == pwd2:
                        # 如果一致 写入字典
                        users_dict.setdefault(name,pwd)
                        print("注册成功!")
                        f = open("user.txt", "wb")
                        pickle.dump(users_dict, f)
                        a = 1
                        break
                    else:
                        print("两次密码不一致,请重新输入!")
        else:
            print("用户名已被占用,请重新注册!")
    else:
        print("用户名中包含非法字符!")
f.close()

登录

'''
用户登陆  
用户输入一个用户名一个密码  
然后和文件里保存的用户名和密码进行匹配  
匹配成功则打印登陆成功  
匹配失败三次打印账号被锁定
'''
#自己写的
#登录
file_2 = open('users.txt','r')
file_2.seek(0,0)
#定义存放用户名,密码的 字典
users_info={}
#逐行读取用户名,密码,并存储到字典中
for line in file_2.readlines():
    users = line.strip().split(',')
    users_info[users[0]] = users[1]
file_2.close()

for i in  range(3):
    username = input('请输入用户名:')
    password = input('请输入密码:')
    if username != "" and password != "" :
        if username in users_info:
            pwd = users_info[username]
            if password != pwd:
                print('密码输入错误')
            else:
                print('%s,欢迎您!'%username)
                break
        else:
            print('用户名不存在!')
    else:
        print('用户名密码不允许为空!')
else:
    print('账号被锁定')
#老师的方法
f = open("user.txt","r")
# 存放用户名的列表
name_list = []
# 存放密码的列表
pwd_list = []
# 存放黑名单的列表
black_list = []
times = 0
a = 0
while a == 0:
    # 用户输入一个用户名
    name = input("请输入您的用户名:")
    # 读取文件中所有的内容
    content = f.readlines()
    # 遍历所有的用户信息
    for var in content:
        # 获取所有的用户名
        account = var.split(":")[0]
        # 将用户名添加到用户列表
        name_list.append(account)
        # 获取所有的密码
        password = var.split(":")[1][:-1]
        # 将所有的密码添加到密码列表
        pwd_list.append(password)
    # 如果用户输入的用户名在用户列表中
    if name in name_list:
        # 打开存放黑名单的文件
        with open("black_user.txt") as f:
            # 获取黑名单文件的内容
            content = f.readlines()
            # 遍历所有的黑用户
            for user in content:
                # 将黑用户添加到黑用户列表
                black_list.append(user[:-1])
            # 判断用户输入的用户名是否存在于黑用户列表
            if name not in black_list:
                while times < 3:
                    # 用户输入密码
                    pwd = input("请输入您的密码:")
                    # 获取输入的用户名在用户列表中的索引位置
                    name_index = name_list.index(name)
                    # 判断密码是否和输入的用户名相匹配
                    if pwd == pwd_list[name_index]:
                        print("登陆成功!")
                        a = 1
                        break
                    else:
                        print("输入密码错误,您还剩%s次机会!"%(2 - times))
                        times += 1
                        if times == 3:
                            print("密码输入三次失败,账户被锁定!")
                            with open("black_user.txt","a") as f:
                                f.write(name+"\n")
                            a = 1
                            break
            else:
                print("用户已经被冻结!")
    else:
        print("用户名不存在!")

f.close()

无人售货

'''
无人售货机   
每购买一次  
打印一次余额   
购买结束之后  
打印购买清单
'''
#自己写的
# 创建一个商品列表
goods_list = [["《Python学习手册》",100],["《Python袖珍指南》",30],["《程序员的数学》",50],["《Python从入门到放弃》",1]]
# 创建一个购买列表
buy_list = []

wage = int(input("请输入您的工资:"))

sum_price = 0

if wage > 0:
    print("====================================")
    print("""
                    ================MHG书店=====================
                        1、%s:%s RMB
                        2、%s:%s RMB
                        3、%s:%s RMB
                        4、%s:%s RMB
                        0、退出
                    ============================================
        """
              %(
                  goods_list[0][0],goods_list[0][1],
                  goods_list[1][0],goods_list[1][1],
                  goods_list[2][0],goods_list[2][1],
                  goods_list[3][0],goods_list[3][1]
              ))

    while True:
        buy_num = int(input("请输入要购买的图书序号:"))

        if buy_num >= 5 :
            print("您需要的图书我家没有,请选择其他图书" )
            continue
        elif buy_num == 0:
            print("您本次购买的图书如下:")
            # 遍历购买图书的清单
            for book,price in buy_list:
                print(book,price,"RMB")
                sum_price += price
            print("您本次共消费 %s RMB,还剩 %s RMB,欢迎下次光临!"%(sum_price,wage))
            break

        # 判断钱是否足够
        elif wage >= goods_list[buy_num-1][1]:
            wage -= goods_list[buy_num-1][1]
            print("购买 %s 成功,本次消费 %s RMB,还剩 %s RMB"
                  %(goods_list[buy_num-1][0],goods_list[buy_num-1][1],wage))
            buy_list.append(goods_list[buy_num-1])
        else:
            print("您的余额为 %s RMB,无法购买此图书!"%(wage))
#老师讲的
# 创建一个商品列表
shop_list = [["iphone",5000],["bike",800],["ipad",6000],["computer",8000]]
# 购物列表
buy = []
price = 0
# 用户输入卡内余额
salary = int(input("请输入您的卡内余额:"))
print("====================XDL超市=====================")
# 打印商品列表
# enumerate:获取容器中的索引和索引对应的值
for num,shop in enumerate(shop_list):
    print(num+1,shop[0],shop[1])
print("输入0退出")
print("================================================")
# 判断余额大于0
if salary > 0:
    while True:
        # 用户输入要购买的商品编号
        buy_num = int(input("请输入要购买的商品编号:"))
        if buy_num == 0:
            print("您本次购买的商品如下:")
            # 本次消费清单
            for shop in buy:
                print(shop)
            print("您本次共消费%s元,卡内余额为%s元,欢迎下次光临."
                  %(price,salary))
            break
        # 判断输入的编号大于0 并且 小于等于商品数量
        elif buy_num > 0 and buy_num <= len(shop_list):
            # 判断余额是否可以支付要购买的商品
            if salary >= shop_list[buy_num-1][1]:
                # 购买商品之后的余额
                salary -= shop_list[buy_num-1][1]
                print("购买%s成功,本次消费%s元,卡内余额%s元."
                      %(shop_list[buy_num-1][0],shop_list[buy_num-1][1],salary))
                # 把购买后的商品  添加到购物列表
                buy.append(shop_list[buy_num-1][0])
                # 计算消费总额
                price += shop_list[buy_num-1][1]
            else:
                print("您的卡内余额为%s元,无法购买此商品!"%(salary))
        else:
            print("商品序号有误!")
内建函数enumerate()
#函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
#以下是 enumerate() 方法的语法:enumerate(sequence, [start=0])
#参数
#sequence -- 一个序列、迭代器或其他支持迭代对象。
#start -- 下标起始位置。
#返回值
#返回 enumerate(枚举) 对象。
shop_list = [["iphone",5000],["bike",800],["ipad",6000],["computer",8000]]
for num,shop in enumerate(shop_list):
    print(num,shop)

遍历目录下所有py文件

'''
递归遍历目录
给定一个路径
遍历路径下所有的文件
筛选出所有py文件
然后打印出来
'''
#自己写的
#定义一个递归函数用于递归遍历指定目录下的所有文件
import os
def file_directory(path):
    # path:遍历指定的路径
    for file in os.listdir(path):
        #将文件路径连接起来
        fill_path = os.path.join(path, file)
        # 判断是不是目录
        if os.path.isdir(os.path.join(path,file)):
            file_directory(os.path.join(path,file))
        else:
            # 判断是不是py文件
            if fill_path[-2:] == "py":
                print(file)
            else:
                pass
for i in range(1,4) :
    # 打印当前绝对路径
    input_path = input("请输入目录:")
    if os.path.isdir(input_path):
        absolute_path = os.path.abspath(input_path)
        print(absolute_path)
        # 调用递归函数
        file_directory(absolute_path)
        break
    else:
        print("输入有误,您还有 %s 次机会!"%(3-i))

#老师讲的
import os
# 给定一个要遍历的路径
FILE_PATH = "D:\兄弟连\python14期\代码\day2"
def getfile(dirpath):
    # 获取指定路径下的所有文件和目录
    file = os.listdir(dirpath)
    # 遍历所有的文件和目录
    for var in file:
        # 拼接路径和文件
        file_path = os.path.join(dirpath,var)
        # 判断是否是一个文件  并且 这个文件以.py结尾
        if os.path.isfile(file_path) and file_path.endswith(".py"):
            print(file_path)
        # 判断是一个文件   但是  不是以.py结尾的文件
        elif os.path.isfile(file_path) and not file_path.endswith(".py"):
            pass
        else:
        # 如果是一个目录  那么就继续做同样的事情
            getfile(file_path)

getfile(FILE_PATH)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 230,362评论 6 544
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,577评论 3 429
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 178,486评论 0 383
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,852评论 1 317
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,600评论 6 412
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 55,944评论 1 328
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,944评论 3 447
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 43,108评论 0 290
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,652评论 1 336
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,385评论 3 358
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,616评论 1 374
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 39,111评论 5 364
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,798评论 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 35,205评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,537评论 1 295
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,334评论 3 400
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,570评论 2 379

推荐阅读更多精彩内容

  • 我受伤了,就在刚刚 疼到想哭。不知道你们是否有这种感觉:眼泪马上就要流出来,咬咬牙,就忍过了。只有那一道防线,不敢...
    海鸥ing阅读 618评论 0 1
  • 一 在我听民谣之前,格澳和我就是很好的朋友了。 童话故事里灰姑娘对进城买东西的父亲说,“我不需要珠宝,你把出门看见...
    南逢酒馆阅读 519评论 0 1
  • 随机化优化 上面提到了最常规的排序,排序,然而在面对完全有序的数组时,快速排序的效率明显降低到了O(n^2)。快速...
    Real_man阅读 247评论 0 1