Discuss / Python / 滴滴打卡

滴滴打卡

Topic source

OTO丶文强

#1 Created at ... [Delete] [Delete and Lock User]

# -*- coding: utf-8 -*-

import os, sqlite3

db_file = os.path.join(os.path.dirname(__file__), 'test1.db')

if os.path.isfile(db_file):

    os.remove(db_file)

# 初始数据:

conn = sqlite3.connect(db_file)

cursor = conn.cursor()

cursor.execute('create table user(id varchar(20) primary key, name varchar(20), score int)')

cursor.execute(r"insert into user values ('A-001', 'Adam', 95)")

cursor.execute(r"insert into user values ('A-002', 'Bart', 62)")

cursor.execute(r"insert into user values ('A-003', 'Lisa', 78)")

cursor.close()

conn.commit()

conn.close()

def get_score_in(low, high):

    # ' 返回指定分数区间的名字,按分数从低到高排序 '

    L = []

    # 连接数据库

    con = sqlite3.connect(db_file)

    cursor = con.cursor()

    # 以分数区间查询数据,返回name,score

    cursor.execute('select name, score from user where score>=? and score<=?',(low,high))

    # cur.execute('select name from user where score between ? and ? order by score',(low,high))

    values = cursor.fetchall()

    # 以list的第二个元素,进行降序

    values.sort(key=lambda elem : elem[1],reverse=False)

    for x, y in values:

    L.append(x)

    cursor.close()

    con.close()

    return L

# 测试:

assert get_score_in(80, 95) == ['Adam'], get_score_in(80, 95)

assert get_score_in(60, 80) == ['Bart', 'Lisa'], get_score_in(60, 80)

assert get_score_in(60, 100) == ['Bart', 'Lisa', 'Adam'], get_score_in(60, 100)

print('Pass')


  • 1

Reply