big-data/大数据基础与应用-学习资料/课堂练习-题目.py
2024-12-06 15:53:49 +08:00

343 lines
12 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 第一周
# 打印菱形
# 效果分析
# 第 1 行4个空格1个星号
# 第 2 行2个空格3个星号星号空格隔开
# 第 3 行0个空格5个星号星号空格隔开
# 第 4 行2个空格3个星号星号空格隔开
# 第 5 行4个空格1个星号
# 第二周
# 第一题:输出字符串
# 书本P372.3
# 第二题:判断某一年是闰年还是平年
# 书本P553.2
# 年份由用户通过键盘输入,
# 闰年的标准能被4整除但是不能被100整除或者能被400整除。
# 第三题:打印数字金字塔
# 书本P493.6
# 第四题:综合案例 打印对称菱形
# 书本P523.15
# 第三周
# # 课后练习
# 第一题: 合并排序
# 已知有两个列表 a_list = [4, 10, 12, 4, 9, 6, 3], b_list = [12, 8, 5, 6, 7, 6, 10]
# 编写程序实现以下功能:
# 将两个列表进行合并,合并时删除重复元素,合并结果存放在 c_list 中;
# 对 c_list 按照元素的大小,从大到小进行排序,并打印出排序结果。
# 第二题:统计次数
# 已知列表 a_list = [4, 6, 8, 6, 4, 2, 6, 6, 5, 7, 4, 2, 1, 7, 6, 7, 4],
# 编写程序统计列表中各元素出现的次数,并将结果按照下面格式输出:
# 元素 xxx 在列表中出现 xxx 次
# 第四周
# 第一题: 字符串
# 书上P944.5
# 第二题: 字符串
# 输入一个字符串,输出该字符串中出现频数最高的字符,
# 如果有多个字母出现的频数并列最高,则输出多个字母。(统计字符出现的频数)
# 第三题: 字典
# a_str = input("请输入一个字符串:")
# a_dict = {}
# for i in a_str:
# old_num = a_dict.get(i, 0)
# a_dict[i] = old_num + 1
# result = sorted(a_dict.items(), key=lambda item: item[1], reverse=True)
# for i in result:
# print(i[0], "字符出现的次数为:", i[1])
# 第五周
# 第一题 函数的定义与调用
# 自定义一个函数,实现打印菱形功能。函数包含一个参数,
# 用于控制菱形的行数。(菱形的打印可参考第三章内容)
# rows = int(input('请输入菱形的行数:'))
# half = rows // 2
# if rows % 2 == 0:
# up = half
# else:
# up = half + 1
# for i in range(1, up + 1):
# print(' ' * (up - i), "* " * (2 * i - 1))
# for i in range(half, 0, -1):
# print(' ' * (up - i), "* " * (2 * i - 1))
# 第二题:自定义一个函数,对任意两个整数之间所有整数(包含这两个整数)进行求和。
# 函数包含两个参数,用于指定起始整数和结束整数。
# 其中小的作为起始整数,大的作为结束整数,将求和结果作为返回值返回。
# 第三题:编写函数实现如下功能,对传递的一组数据进行操作,调整数据的位置,
# 使得所有的奇数位于前半部分,所有的偶数位于后半部分,
# 并保证奇数和奇数,偶数和偶数之间的相对位置不变。
# 例如:原始数据为:[9, 6, 7, 3, 1, 8, 4, 3, 6]
# 则调整后的数据为: [9, 7, 3, 1, 3, 6, 8, 4, 6]。
# 第四题 参数类型与参数传递
# 自定义一个函数,用于计算矩形的面积和周长,
# 函数包含两个参数:长和宽,由于正方形是特殊的矩形,因此也支持传递一个参数的情况。
# 当传递一个参数时,表示长和宽相等,最后将计算结果进行返回。
# (同时支持一个参数和两个参数,同时返回多个值)
# 第五题 递归
# 角谷定理。随机输入一个自然数若为偶数则把它除以2若为奇数则把它乘以3加1。
# 经过如此有限次运算后总可以得到自然数值1。
# 编写程序捕获用户输入的数字然后输出从该数字到最终结果1的过程
# 统计需要经过多少步计算可得到自然数1。
# 如输入22
# 输出 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
# 步数为15
# 第六题 递归
# 一只青蛙一次可以跳上1级台阶也可以跳上2级。
# 求该青蛙跳上一个n级的台阶总共有多少种跳法先后次序不同算不同的结果
# 第六-七周
# 第六章 课后练习
# P127 课后练习 6.1
'''编写一个程序,提示用户输入一个整数,如果输入的不是整数,则让用户重新输入,直到是一个整数为止。
例如第一次输入abc第二次输入12.5第三次输入6执行效果如下:
请输入一个整数abc
输入不符合要求,请重新输入!
请输入一个整数12.5
输入不符合要求,请重新输入!
请输入一个整数6
输入正确你输入的整数为6'''
# 第七章 课后练习
# P145 课后练习 7.6
# '''编写一个程序模拟打印下载进度效果每隔0.2秒打印一次下载进度,
# 要求下载进度只在一行打印,每次打印的进度不同,下载完成后打印下载完成!(程序休眠、同一行打印不换行)
# '''
# P145 课后练习 7.7
'''编写一个程序随机生成1000个字母包含大写字母和小写字母然后统计各个字母出现的次数
统计时忽略字母的大小写,最后将统计结果按照字母出现的次数从高到低排序输出。'''
# P145 课后练习 7.8
'''已知某个班级学生年龄分布如下:
ages = [("a", 19), ("b", 20), ("c", 20), ("d", 19), ("e", 21), ("f", 19), ("g", 18),
("h", 19), ("i", 21), ("j", 21), ("k", 18), ("l", 19), ("m", 18), ("n", 21),
("o", 18), ("p", 19), ("q", 18), ("r", 19), ("s", 20), ("t", 19), ("u", 19),
("v", 20), ("w", 19), ("x", 20), ("y", 20), ("z", 19)]
编写程序将学生按照年龄分类,并按照年龄从大到小打印出各个年龄下的学生姓名列表。
'''
# 第四周字典另一种解法
# 随机输入一个字符串,统计该字符串中各种字符出现的次数,
# 并将统计结果按照字符出现次数从高到低进行排序,最终打印排序后的信息。每行效果如下:
# xxx 字符出现次数为: xxx
# P94 4.6 字典
# from collections import Counter
# a_str = input("请输入一个字符串:")
# result = Counter(a_str)
# for i in result.most_common():
# print(i[0], "字符出现的次数为:", i[1])
# a_str = input("请输入一个字符串:")
# a_dict = {}
# for i in a_str:
# old_num = a_dict.get(i, 0)
# a_dict[i] = old_num + 1
# result = sorted(a_dict.items(), key=lambda item: item[1], reverse=True)
# for i in result:
# print(i[0], "字符出现的次数为:", i[1])
# 第八周
# # 课后练习
# # P165 课后练习8.5
# '''编写程序实现九九乘法表并将其保存到文件test.txt中去。'''
# # P165 课后练习8.6
# '''编写程序实现递归搜索class8文件夹下所有的图片文件例如 jpg、png文件
# 并将所有的图片文件复制到D\images文件夹下。关键提示图片文件的复制可采用二进制操作'''
# # P165 课后练习8.7
# '''编写程序读取学校信息表内容然后单独将所有的211高校放入一个表单
# 将所有的985高校放入一个表单两个表单位于同一个Excel文件。'''
# '''
# # P165 课后练习8.8
# '''编写程序读取给定的test.txt文件内容统计该文件中各单词出现的次数
# 并将统计结果按照单词出现的次数从高到低写入到文件result.xsl中。
# test.txt是一个英文文本单词之间通过空格隔开 要求单词不区分大小写,
# 忽略逗号、句号等标点符号。result.xsl文件标题为词频统计结果
# 包含两列名称分别为:单词和频数,所有的频数以加粗红色显示。)'''
# '''
# 见素材:测试本段代码时可以在网上查找一段英文文章保存到本地,保存为"test.txt"文件格式,然后将文件直接拖进本项目中测试
# '''
# 第九周
# # 9.1
# 设计一个 表示圆的类:Circle这个类包含一个实例成员变量半径包含两个方法求面积的方法、求周长的方法。
# 利用这个类创建半径为1~10的圆并打印出相应的信息运行效果如图所示保留两位小数。
# # 9.2
# 阅读下列程序代码,思考程序执行结果。
# class Test:
# count = 0
# def __init__(self, num=10):
# Test.count = Test.count + 1
# self.__num = num
# def print(self):
# print("count=", self.count)
# print("num=", self.__num)
# t_1 = Test(5)
# t_2 = Test(8)
# t_1.print()
# t_2.print()
#
# t_1 = Test(5)
# t_2 = Test(8)
# t_1.count = 12
# t_1.print()
# t_2.print()
#
# t_1 = Test(5)
# t_2 = Test(8)
# Test.count = 12
# t_1.print()
# t_2.print()
# t_1 = Test(5)
# t_2 = Test(8)
# t_1.__num = 15
# t_1.print()
# t_2.print()
# print(t_1.__num)
# print(dir(t_1))
#
# t_1 = Test(5)
# t_2 = Test(8)
# t_1._Test__num = 15
# t_1.print()
# t_2.print()
# # 9.4
# 设计一个 银行账户类:Account该类包含三个成员变量账号、用户名、余额。
# 该类提供三个方法存款、取款、转账。初始化时账户余额为0
# 取款和转账前需判断余额是否充足,
# 余额不足时,操作失败,打印相关提示信息。
# 如果两个账户账号相同时,则认为它们是同一个账户。
# 打印账户对象时,将会显示账号、用户名、余额等基本信息。
# 提示重写__eq__方法、__str__方法
# 第十周
# 书上P203: 课后练习
# 已知某个班级的某次考试成绩信息包括学号、语文、数学、英语、总分,
# 该成绩信息保存在一张Excel表中部分信息如图所示现在要求将其读入到数据库中去。同时实现以下功能
# # 创建数据表score, 读取excel中数据到数据库表中
# import xlrd
# import sqlite3
# def read_excels(file_name): #读取Excel文件
# wb = xlrd.open_workbook(file_name) #打开Excel文件返回的是一个工作簿
# sheet = wb.sheet_by_index(0) #由工作簿得到表单
# students = [] #由行和列来获取文件中的信息用列表students保存
# for row in range(1, sheet.nrows):
# student = []
# for col in range(sheet.ncols):
# student.append(transform(sheet.cell_value(row, col)))
# students.append(student)
# return students
# #
# def transform(data): # 返回的成绩是浮点数,尝试转换成整型
# try:
# return int(data)
# except: # 不能转换原样返回
# return data
# #
# 格式化输出
# def print_data(datas): # 打印结果
# print("{:^8}{:^8}{:^8}{:^8}{:^8}".format("num", "chinese", "math", "english", "total"))
# for data in datas:
# print("{:^8}{:^8}{:^8}{:^8}{:^8}".format(data[0], data[1], data[2], data[3], data[4]))
#
# # 1.按照总分排序
# # 2.获取所有存在不及格科目的学生记录
# # 3.获取指定科目的最高分、最低分以及平均分
# # 4.查询三科都及格的学生信息
# # 5.将所有学生的数学成绩都加5分
# # 6.删除语文不及格的学生记录,并打印删除了多少条记录
# 第十一周
# 书上P248 11.1 课后练习
# import numpy as np
#
# array_1 = np.arange(1, 21).reshape(4, 5)
# print(array_1)
#
# # (1) array_1[2, 3]、array_1[2]、array_1[2][3]、array_1[2][:3]、array_1[:][:3]、array_1[:, :3]各自表示什么含义?
# # (2) 如果只想获取第2行和第4行数据如何表示
# # (3) 如果只想获取第3列和第5列数据如何表示
# # (4) 如果想获取大于10且能被3整除的数据如何表示
# # (5) 如何通过一个表达式获取第3行第4列、第2行第5列、第4行第1列数据
# # (6) 将该数组垂直平均分割成2个子数组。
# # (7) 将该数组水平分割为3个子数组第1列第2-4列第5列。
# 第十二周
# 书上P287 12.10 课后练习
# 第一题
# import pandas as pd
# import numpy as np
# data_1 = pd.read_excel("exer_1.xlsx")
# print(data_1)
# data_2 = pd.read_excel("exer_2.xlsx")
# print(data_2)
# data_3 = data_1.join(data_2.set_index("姓名"), on="姓名")
# print(data_3)
# 第2-7题
# 第十三周
书上条形图饼图线形图例题