# 第一周 # 打印菱形 # 效果分析 # 第 1 行4个空格,1个星号; # 第 2 行2个空格,3个星号,星号空格隔开; # 第 3 行0个空格,5个星号,星号空格隔开; # 第 4 行2个空格,3个星号,星号空格隔开; # 第 5 行4个空格,1个星号; # 第二周 # 第一题:输出字符串 # 书本P37:2.3 # 第二题:判断某一年是闰年还是平年 # 书本P55:3.2 # 年份由用户通过键盘输入, # (闰年的标准:能被4整除,但是不能被100整除,或者能被400整除。) # 第三题:打印数字金字塔 # 书本P49:3.6 # 第四题:综合案例 打印对称菱形 # 书本P52:3.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 次 # 第四周 # 第一题: 字符串 # 书上P94:4.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题 # 第十三周 书上条形图、饼图、线形图例题