343 lines
12 KiB
Python
343 lines
12 KiB
Python
|
# 第一周
|
|||
|
# 打印菱形
|
|||
|
# 效果分析
|
|||
|
# 第 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题
|
|||
|
|
|||
|
# 第十三周
|
|||
|
书上条形图、饼图、线形图例题
|