Discuss / Python / 大家新年快乐哈

大家新年快乐哈

Topic source
# -*- coding: utf-8 -*-
#%%
import os, sqlite3

db_file = os.path.join(os.path.dirname(__file__), 'test.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):
    ' 返回指定分数区间的名字,按分数从低到高排序 '
    conn = sqlite3.connect(db_file)
    cursor = conn.cursor()
    L=[]
    for id,name,score in cursor.execute('SELECT * FROM user ORDER BY score'):
        if low<=score<=high:
            L.append(name)
    cursor.close()
    conn.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')

我这个是先一行行取出来,再判断分数是否在区间内,看了一下大家的答案,居然可以直接在sql指令里判断,感觉那样会更快一些


  • 1

Reply