【Python 程序设计】上机作业
有些代码是嫖的,但大部分代码尽自己可能尝试以最简单或是最有趣的方式实现。
Python 课自然是没有听的,肯定有更好更规范的写法,欢迎讨论
目录:
- 【Python 程序设计】上机作业
- 【Python】第一次上机报告
- 【Python】第二次上机报告
- 【Python】第三次上机报告
- 【Python】第四次上机报告
【Python】第一次上机报告
1)安装 Python,使用 Python 解释器。
1 | $ python |
2)简单的加减乘除运算,调用标准模块 math 中的数学函数。
1 | 0.1+0.2 |
3)编写和运行 Python 脚本。
1 | $ python a.py |
4)编写程序,生成包含 1000 个 0 到 100 之间的随机整数,并统计每个元素的出现次数。
1 | import random |
5)编写程序,生成包含 20 个随机数的列表,然后将前 10 个元素升序排列,后 10 个元素降序排列,并输出结果。
1 | import random |
6)编写程序,运行后用户输入 4 位整数作为年份,判断其是否为闰年。如果年份能被 400 整除,则为闰年;如果年份能被 4 整除但不能被 100 整除也为闰年。
使用了海象运算符赋值,故需 python 版本>=3.8
1 | print('闰年' if ((year:=int(input("请输入年份:")))%4==0 and year%100!=0) or year%400==0 else '平年') |
或者使用calendar
1 | import calendar |
【Python】第二次上机报告
5 月 6 号上机后的作业是“字符串 1”中的例题,因为代码已给出,所以要求同学们写注释,验证代码是否有问题,写有关程序的思考 (如初始看到题目,你是准备怎么实现的)。
例 4-1 编写函数实现字符串加密和解密,循环使用指定密钥,采用简单的异或算法
添加注释:
1 | def crypt(source, key): |
使用 zip() 函数:
1 | def crypt(source, key): |
函数式编程的写法:
1 | def crypt(source, key): |
优化代码,使用 base64,使不可见字符可见
1 | from base64 import b64encode |
例 4-2 编写程序,生成大量随机信息,这在需要获取大量数据来测试或演示软件功能的时候非常有用,不仅能真实展示软件功能或算法,还可以避免泄露真实数据或者引起不必要的争议。
1 | import random |
例 4-3 检查并判断密码字符串的安全强度。这实际上是一个分类问题。
1 | import string |
例 4-4 编写程序,把一个英文句子中的单词倒置,标点符号不倒置,例如 I like beijing. 经过函数后变为:beijing. like I
添加了强制类型:
1 | # str.split(sep=None, maxsplit=-1): |
输出:
beijing. like I
beijing. like I
beijing. like I
例 4-5 编写程序,查找一个字符串中最长的数字子串
1 | def longest(s): |
输出:
111abc2d3:111
abc111111d:111111
a2bc11111111:11111111
选择法:
1 | # 选择法 def longest(s: str): length = len(s) start = 0 span = (0, 0) for pos in range(length): if s[pos].isdigit() and (pos == 0 or not s[pos-1].isdigit()): start = pos elif ((not s[pos].isdigit()) and s[pos-1].isdigit() and pos-start > span[1]-span[0]): span = (start, pos-1) # 字符串以数字结束的情况 if s[pos].isdigit() and pos-start >= span[1]-span[0]: span = (start, pos) return s[span[0]:span[1]+1]ss = ('111abc2d3', 'abc111111d', 'a2bc11111111')for s in ss: print(s, longest(s), sep=':') |
【Python】第三次上机报告
第三次实验作业
1)编写函数,接收一个字符串,分别统计大写字母、小写字母、数字、其他字符的个数,并以元组的形式返回结果。
2)编写函数,可以接收任意多个整数并输出其中的最大值和所有整数之和。
3)编写函数,模拟内置函数 sorted()。
4)用字典建立一个通讯录,向字典中添加和删除通讯人(名字、电话、邮箱、工作单位等),查询某个人的信息,然后输出通讯录中所有人的信息。
5)用生成器的方式计算任意起止范围内质数的和。质数,又称素数,是大于 1 的自然数,除了 1 和它本身外,不能被其他自然数整除。
1)编写函数,接收一个字符串,分别统计大写字母、小写字母、数字、其他字符的个数,并以元组的形式返回结果。
1 | def numberOfType(a: str): |
2)编写函数,可以接收任意多个整数并输出其中的最大值和所有整数之和。
1 | def max_sum(num_list: list): |
3)编写函数,模拟内置函数 sorted()。
1 | # timSort |
输出:
共0.43574秒
共0.00009秒
参考:TimSort(简易版)和堆排序的 Python 实现_Leahy000 的博客-CSDN 博客
4)用字典建立一个通讯录,向字典中添加和删除通讯人(名字、电话、邮箱、工作单位等),查询某个人的信息,然后输出通讯录中所有人的信息。
1 | def add(): |
5)用生成器的方式计算任意起止范围内质数的和。质数,又称素数,是大于 1 的自然数,除了 1 和它本身外,不能被其他自然数整除。
1 | def myprime(x): |
【Python】第四次上机报告
基本内容包括:
1)编写代码,实现一个栈(Stack)的类。栈是只能在一端插入和删除数据的序列。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。
2)编写代码,定义一个形状基类,有 2 个属性:面积和周长,以及两个无返回值的方法:area() 和 perimeter(),分别计算形状的面积和周长,从基类派生出三个子类:三角形、矩形、圆,重载基类的两个方法。
实现一个栈(Stack)的类
编写代码,实现一个栈(Stack)的类。栈是只能在一端插入和删除数据的序列。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。
1 | class Stack(object): |
形状的类
编写代码,定义一个形状基类,有 2 个属性:面积和周长,以及两个无返回值的方法:area()
和 perimeter()
,分别计算形状的面积和周长,从基类派生出三个子类:三角形、矩形、圆,重载基类的两个方法
1 | # 编写代码,定义一个形状基类, |