您的位置:新葡亰496net > 奥门新萄京娱乐场 > 新葡亰496net:字典的案例演示,MySql基本语法及练

新葡亰496net:字典的案例演示,MySql基本语法及练

发布时间:2019-11-09 07:49编辑:奥门新萄京娱乐场浏览(146)

    案例01:生成0-10之间5个不相等的数

    字典的案例演示,字典案例演示

    案例:有10个学生,姓名自行添加。有三门考试语文,数学和英语,随机为这10个学生生成分数【50-100】

    需求:打印一张成绩排名表。

    数据存储格式如下:

    import random

    # 初始化学生的基本信息

    dic_student_info = {95001: "王一", 95002: "胡二", 95003: "张三", 95004: "李四", 95005: "赵五",

                        95006: "马六", 95007: "杨七", 95008: "刘八", 95008: "孙九", 95010: "陈十"}

    # 生成学生成绩

    student_result = []

    for i in range(len(dic_student_info)):

        temp_result = []

        for j in range(3):

            temp_result.append(random.randint(50,100))

            # 添加到student_result中

    *   * student_result.append(temp_result)

    # 打印生成的成绩

    print(student_result)

     

     

    # 生成总分的list

    total_result = []

    for i in student_result:

        total_result.append(sum(i))

     

    # 把总分倒叙排列

    total_result.sort(reverse=True)

    print(total_result)

     

    # 组合存储结构

    total_student_result = {}

    # 获得学生信息的key

    student_sno = list(dic_student_info)

     

     

    # 遍历

    index = 0

    for i in student_sno:

        temp_total = {}

        temp_total["姓名"] = dic_student_info[i]

        temp_total["明细"] = list(student_result)[index]

        temp_total["总分"] = sum(list(student_result)[index])

        temp_total["名次"] = total_result.index(sum((student_result)[index])) 1

        total_student_result[i] = temp_total

        index = 1

    for i in total_student_result:

        print(i, ":", total_student_result[i])

     

    # 打印一张成绩倒叙排名表【名次,学号,姓名,语文,数学,英语,总分,均分】

    print("n n ###########################成绩统计表##############################")

    print("名次     学号       姓名       语文    数学    英语     总分    均分")

    print("=====================================================================")

    for i in range(len(dic_student_info)):

        for j in total_student_result:

            if total_student_result[j]["名次"] == i 1:

                print(i 1, end="t t")

                print(j, end="t t")

                print(total_student_result[j]["姓名"], end="t t")

                print(total_student_result[j]["明细"][0], end="t t")

                print(total_student_result[j]["明细"][1], end="t t")

                print(total_student_result[j]["明细"][2], end="t t")

                print(total_student_result[j]["总分"], end="t t")

                print("%.2f" % (total_student_result[j]["总分"]/3))

                break

            else:continue

    print("=====================================================================")

    执行结果:

    C:pythonpython.exe C:/python/demo/file3.py

    [[77, 57, 61], [64, 77, 65], [88, 88, 83], [95, 75, 100], [57, 79, 88], [59, 90, 90], [88, 68, 80], [59, 79, 89], [58, 55, 73]]

    [270, 259, 239, 236, 227, 224, 206, 195, 186]

    95001 : {'姓名': '王一', '明细': [77, 57, 61], '总分': 195, '名次': 8}

    95002 : {'姓名': '胡二', '明细': [64, 77, 65], '总分': 206, '名次': 7}

    95003 : {'姓名': '张三', '明细': [88, 88, 83], '总分': 259, '名次': 2}

    95004 : {'姓名': '李四', '明细': [95, 75, 100], '总分': 270, '名次': 1}

    95005 : {'姓名': '赵五', '明细': [57, 79, 88], '总分': 224, '名次': 6}

    95006 : {'姓名': '马六', '明细': [59, 90, 90], '总分': 239, '名次': 3}

    95007 : {'姓名': '杨七', '明细': [88, 68, 80], '总分': 236, '名次': 4}

    95008 : {'姓名': '孙九', '明细': [59, 79, 89], '总分': 227, '名次': 5}

    95010 : {'姓名': '陈十', '明细': [58, 55, 73], '总分': 186, '名次': 9}

     

     

     ###########################成绩统计表##############################

    名次     学号       姓名       语文    数学    英语     总分    均分

    =====================================================================

    1                 95004                 李四                 95                 75                 100                 270                 90.00

    2                 95003                 张三                 88                 88                 83                 259                 86.33

    3                 95006                 马六                 59                 90                 90                 239                 79.67

    4                 95007                 杨七                 88                 68                 80                 236                 78.67

    5                 95008                 孙九                 59                 79                 89                 227                 75.67

    6                 95005                 赵五                 57                 79                 88                 224                 74.67

    7                 95002                 胡二                 64                 77                 65                 206                 68.67

    8                 95001                 王一                 77                 57                 61                 195                 65.00

    9                 95010                 陈十                 58                 55                 73                 186                 62.00

     

    Process finished with exit code 0

    案例:有10个学生,姓名自行添加。有三门考试语文,数学和英语,随机为这10个学生生成分数【50-100】 需...

    MySql基本语法及练习(4)

    1.创建一个员工表(并指明字符集为UTF8)
    drop table if exists employee;
    create table employee(
    id int,
    name varchar(20),
    gender varchar(6),
    birthday date,
    entry_date date,
    job varchar(30),
    salary float(5,1),
    resume text
    );

    **2.插入数据:
    insert into employee(id,name,gender,birthday,entry_date,job,salary,resume)
    values(1,'jack','male','2011-10-8','2011-12-31','software',5000.1,'hello');

    3.在上面员工表的基本上增加一个image列。
    alter table employee add image blob;

    4.修改job列,使其长度为60。
    alter table employee
    modify job varchar(60) default 'teacher';

    5.删除gender列。
    alter table employee drop gender;

    6.表名改为user。
    rename table employee to user;**

    注意:对于MySql而言,不能修改数据库的名字,但是可以修改表名

    **
    7.修改表的字符集为gbk。
    alter table user
    character set UTF8;

    8.列名name修改为username。
    alter table user
    change column name username varchar(20);

    9.向user表插入一条中文记录
    insert into user(username,id,birthday,entry_date,job,salary,resume)
    values('杰克',2,'2011-10-8','2011-12-31','software',5000.1,'你好');

    insert into user values(3,'马利','2011-10-8','2011-12-31','software',5000.1,'你好',NULL);

    insert into user values(4,'马利','2011-10-8','2011-12-31','software',5000.1,NULL,NULL);

    insert into user(id,username,birthday,entry_date,job,salary,image)
    values(5,'马利','2011-10-8','2011-12-31','software',5000.1,NULL);

    10.修改客户端输入和输出使用的编码方式,与WindowXP平台一致
    set character_set_client=gbk;
    set character_set_results=gbk;

    11.将所有员工薪水修改为6000元。
    update user set salary = 6000;

    12.将姓名为’马利’的员工薪水修改为7000元。
    update user set salary = 7000 where username = '马利';

    13.将’jack’的薪水在原有基础上增加1000元。
    update user set salary = salary 1000 where username = 'jack';

    14.删除表中名称为’jack’的记录。
    delete from user where username = 'jack';

    15.删除表中所有记录。
    delete from user;

    16.使用truncate删除表中记录。
    truncate table user;

    17.查询表中所有学生的信息。
    select * from student;
    select id,name,math,chinese,english from student;
    select name,id,math,chinese,english from student;
    select name,math from student;

    18.查询表中所有学生的姓名和对应的英语成绩。
    select name,english from student;

    19.过滤表中重复数据。
    select distinct english from student;
    select distinct name,english from student;

    20.在所有学生分数上加10分特长分。
    select name,math 10 from student;
    select name as 姓名,math 10 as 数学 from student;

    21.统计每个学生的总分。
    select name,math chinese english
    from student;

    22.使用别名表示学生分数。
    select name,math chinese english as 总分
    from student;

    23.查询姓名为’张小明’的学生成绩
    select * from student
    where name = '张小明';

    24.查询英语成绩大于90分的同学
    select * from student
    where english > 90;

    24.查询总分大于200分的所有同学
    select name,chinese math english as 总分
    from student
    where chinese math english > 200;

    25.查询英语分数在 80-90之间的同学。
    select *
    from student
    where english>=80 and english<=90;

    select *
    from student
    where english between 80 and 90;

    26.查询数学分数为89,90,91的同学。
    select *
    from student
    where math=89 or math= 90 or math=91;

    select *
    from student
    where math [not] in(89,90,91);

    27.查询所有姓’李’的学生成绩。
    select *
    from student
    where name LIKE '李%';

    select * from student
    where name LIKE '%李';

    select * from student
    where name LIKE '%李%';

    28.在网站开发中多条件查询中常用到
    select * from student
    where name LIKE '%%';

    select * from student
    where name LIKE '__李';

    select * from student
    where math IS [NOT] NULL;

    29.查询数学分>80且语文分>80的同学。
    select *
    from student
    where math >80 and chinese>80;

    30.对数学成绩排序后输出。
    升序:
    select *
    from student
    order by math asc;

    降序:
    select *
    from student
    order by math desc;

    对总分降序后输出。
    select name,math chinese english as 总分
    from student
    order by math chinese english desc;

    31.对姓’李’的学生总分降序输出。
    select name,math chinese english as 总分
    from student
    where name LIKE '李%'
    order by math chinese english desc;

    32.统计一个班级共有多少学生?
    select count(*) as 总人数
    from student;

    33.统计数学成绩大于80的学生有多少个?
    select count(*) as 总人数
    from student
    where math > 80;

    34.统计总分大于250的人数有多少?
    select count(*) as 总人数
    from student
    where (math chinese english) > 250;

    select count(english) as 总人数
    from student;//13

    select count(math) as 总人数
    from student;

    35.统计一个班级数学总成绩。
    select sum(math)
    from student;

    select sum(name)
    from student;//0

    36.统计一个班级语文、英语、数学各科的总成绩。
    select sum(math) as 数学总分,sum(chinese) as 语文总分,sum(english) as 英语总分
    from student;

    37.统计一个班级语文、英语、数学的成绩总和。
    select sum(math) sum(chinese) sum(english) as 班级总分
    from student;

    38.统计一个班级语文成绩平均分。
    select sum(math)/count(math)
    from student;

    select sum(math)/count(*)
    from student;

    总结:**

    (1).delete from 或truncate table或drop table的各自的区别:
    delete from:按行删除表中的所有记录,但会保留表,适合删除数据量不大的数据,可按条件删除
    truncate table:复制原表结构-〉一次性删除整表 -> 自动恢复原表结构,适合删除数据量较大的数据,不能按条件删除
    drop table:删除表本身
    删除记录时,一定要留意表间的关联关系

    (2).排序:NULL值为最小,使用order by子句,默认升序,order by子句必须放置在最后
    (3).复合函数
    (1)count()函数,统计之用,不统计NULL值
    (2)sum()函数,统计和之用,不要统计非数值,如果统计非数值,返回0

    **(4).合计函数
    avg()
    max(),min(),当max()和min()函数位于日期类型时,分别取得最近日期和最早日期

    **

    1.创建一个员工表(并指明字符集为UTF8) drop table if exists employee; create table employee( id int, name varchar(20), gender varc...

    方法1:使用list集合实现

    import random

    list01 = []

    for i in range(100):

        num01 = random.randint(0, 10)

        if num01 not in list01:

            list01.append(num01)

        if len(list01)==5:

            break

    print(list01)

     

    方法2:使用set集合实现,自动消除重复

    import random

    number_set = set()

    while len(number_set) < 5:

        number_set.add(random.randint(0,10))

     

    print(number_set)

     

    执行结果:

    新葡亰496net,C:pythonpython.exe C:/python/demo/file3.py

    {0, 1, 6, 9, 10}

     

    Process finished with exit code 0

     

    案例02:有10个学生,姓名自行添加。有三门考试:语文、数学和英语,随机为这10名学生生成分数【50-100】,要求每一门科目中所有学生分数不能重复

    需求:

    1)统计出每门科目的前三名和后三名【包含姓名和具体分数】

    2)统计出总分的前三名和后三名

    3)在(50-100)的数字中,那些数字没有在三门的分数中出现过

     

    方法01:

    import random

    student_name = ["王一", "胡二", "张三", "李四", "赵五", "马六", "杨七", "刘八", "孙九", "陈十"]

    student_result = []  # 存储所有学生的成绩明细

    chinese_result = set()  # 存储语文分数

    maths_result = set()  # 存储数学分数

    english_result = set()  # 存储外语分数

    # 开始生成一个语文分数

    for i in range(len(student_name)):

        while True:

            temp = random.randint(50, 100)

            if temp not in chinese_result:

                chinese_result.add(temp)

                break

            else:

                continue

        # 开始生成一个数学分数

    *   * while True:

            temp = random.randint(50, 100)

            if temp not in maths_result:

                maths_result.add(temp)

                break

            else:

                continue

        # 开始生成一个英语分数

    *   * while True:

            temp = random.randint(50, 100)

            if temp not in english_result:

                english_result.add(temp)

                break

            else:

                continue

     

    print(chinese_result)

    print(maths_result)

    print(english_result)

     

    方法02:

    对于相同的操作可以抽象成一个函数,在通过get调用这个函数即可

    import random

    def get_result(result:set):

        while True:

            temp = random.randint(50, 100)

            if temp not in result:

                result.add(temp)

                break

            else:

                continue

        return result

     

    student_name = ["王一", "胡二", "张三", "李四", "赵五", "马六", "杨七", "刘八", "孙九", "陈十"]

    student_result = []  # 存储所有学生的成绩明细

    chinese_result = set()  # 存储语文分数

    maths_result = set()  # 存储数学分数

    english_result = set()  # 存储外语分数

     

    # 开始生成分数

    for i in range(len(student_name)):

        # 开始生成一个语文分数

    *   * chinese_result = get_result(chinese_result)

        # 开始生成一个数学分数

    *   * maths_result = get_result(maths_result)

        # 开始生成一个英语分数

    *   * english_result = get_result(english_result)

     

    print(student_name)

    print(chinese_result)

    print(maths_result)

    print(english_result)

     

    # 把三个set集合转为list

    chinese_result = list(chinese_result)

    maths_result = list(maths_result)

    english_result = list(english_result)

     

    # 生成成绩明细

    for i in range(len(student_name)):

        temp_list = []

        temp_list.append(chinese_新葡亰496net:字典的案例演示,MySql基本语法及练习。result[i])

        temp_list.append(maths_result[i])

        temp_list.append(english_result[i])

        student_result.append(temp_list)

     

    print(chinese_result)

    print(maths_result)

    print(english_result)

    print(student_result)

     

    # 需求1:统计出每门科目的前三名和后三名【包含姓名和具体分数】以语文成绩为例

    chinese_one = max(chinese_result)

    print("语文第一名:姓名:%s,分数:%d" %(student_name[chinese_result.index(chinese_one)],chinese_one))

    新葡亰496net:字典的案例演示,MySql基本语法及练习。chinese_two = sorted(chinese_result)[8]

    print("语文第二名:姓名:%s,分数:%d" %(student_name[chinese_result.index(chinese_two)],chinese_two))

    chinese_three = sorted(chinese_result)[7]

    print("语文第三名:姓名:%s,分数:%d" %(student_name[chinese_result.index(chinese_three)],chinese_three))

     

    chinese_last_one = sorted(chinese_result)[0]

    print("语文倒数第一名:姓名:%s,分数:%d" %(student_name[chinese_result.index(chinese_last_one)],chinese_last_one))

    chinese_last_two = sorted(chinese_result)[1]

    print("语文倒数第二名:姓名:%s,分数:%d" %(student_name[chinese_result.index(chinese_last_two)],chinese_last_two))

    chinese_last_three = sorted(chinese_result)[2]

    print("语文倒数第三名:姓名:%s,分数:%d" %(student_name[chinese_result.index(chinese_last_three)],chinese_last_three))

    # 需求2:统计出总分的前三名和后三名

    student_total_result = []

    for i in student_result:

        student_total_result.append(sum(i))

    print(student_total_result)

     

    # 打印前三名

    total_one = sorted(student_total_result)[9]  # 获取第一名分数

    total_one_index = student_total_result.index(total_one)  # 获取第一名分数的索引

    # 打印第一名的姓名和总分均分

    print("总分第一名【姓名:%s,分数:%d,均分:%.2f】" %(student_name[total_one_index],total_one, total_one/3))

    # 打印第一名的分数明细

    print("tt 语文:%d,数学:%d,英语:%d" % (student_result[total_one_index][0], student_result[total_one_index][1], student_result[total_one_index][2]))

    total_two = sorted(student_total_result)[8]

    print("总分第二名【姓名:%s,分数:%d,均分:%.2f】" %(student_name[student_total_result.index(total_two)],total_two, total_two/3))

    total_three = sorted(student_total_result)[7]

    print("总分第三名【姓名:%s,分数:%d,均分:%.2f】" %(student_name[student_total_result.index(total_three)],total_three, total_three/3))

     

    # 需求3:在(50-100)的数字中,那些数字没有在三门的分数中出现过

    total_number = set()

    for i in range(50, 101):

        total_number.add(i)

     

    had_number = (set(chinese_result) | set(maths_result) | set(english_result))

    print("未出现的数字有:", (total_number-had_number))

     

    执行结果:

    C:pythonpython.exe C:/python/demo/file3.py

    ['王一', '胡二', '张三', '李四', '赵五', '马六', '杨七', '刘八', '孙九', '陈十']

    {66, 80, 83, 51, 52, 86, 54, 55, 60, 94}

    {98, 69, 74, 75, 77, 82, 52, 89, 92, 95}

    {96, 66, 71, 72, 85, 88, 92, 61, 95, 63}

    [66, 80, 83, 51, 52, 86, 54, 55, 60, 94]

    [98, 69, 74, 75, 77, 82, 52, 89, 92, 95]

    [96, 66, 71, 72, 85, 88, 92, 61, 95, 63]

    [[66, 98, 96], [80, 69, 66], [83, 74, 71], [51, 75, 72], [52, 77, 85], [86, 82, 88], [54, 52, 92], [55, 89, 61], [60, 92, 95], [94, 95, 63]]

    语文第一名:姓名:陈十,分数:94

    语文第二名:姓名:马六,分数:86

    语文第三名:姓名:张三,分数:83

    语文倒数第一名:姓名:李四,分数:51

    语文倒数第二名:姓名:赵五,分数:52

    语文倒数第三名:姓名:杨七,分数:54

    [260, 215, 228, 198, 214, 256, 198, 205, 247, 252]

    总分第一名【姓名:王一,分数:260,均分:86.67】

     语文:66,数学:98,英语:96

    总分第二名【姓名:马六,分数:256,均分:85.33】

    总分第三名【姓名:陈十,分数:252,均分:84.00】

    未出现的数字有: {50, 53, 56, 57, 58, 59, 62, 64, 65, 67, 68, 70, 73, 76, 78, 79, 81, 84, 87, 90, 91, 93, 97, 99, 100}

     

    Process finished with exit code 0

     

    本文由新葡亰496net发布于奥门新萄京娱乐场,转载请注明出处:新葡亰496net:字典的案例演示,MySql基本语法及练

    关键词: