# -*- 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指令里判断,感觉那样会更快一些
Sign in to make a reply
雨中的后皇嘉树
我这个是先一行行取出来,再判断分数是否在区间内,看了一下大家的答案,居然可以直接在sql指令里判断,感觉那样会更快一些