python作业

大一下Python上机操作期末

1、定义一个字典,其中存储了不同学生的分数。字典的键是学生姓名,值是该学生的分数(0-100的整数)。完成以下任务:

  • 添加5个元素(包括姓名和分数),其中"张三"的分数为85。
  • 修改学生"李四"的分数为90(假设"李四"已经在字典中)。
  • 找出字典中分数最高的学生姓名和分数。
  • 删除分数低于60的学生。
  • 打印出修改后的字典。
python 复制代码
student = {
    '张三': 85,
    '李四': 80,
    '王五': 40,
    '赵六': 59,
    '孙七': 20,
}
# 修改学生'李四'的分数为90
student['李四'] = 90

# 找出字典中最高分的学生和分数
#   方法一: 使用原始方法
value_max = 0
name = ''
for key,value in student.items():  # 遍历学生字典
    if value > value_max:
        value_max = value    # 获取最高分数
        name = key   # 获取最高分的名字
print(f'学生分数最高的是{name}, 分数为:{value_max}')
#   方法二: 使用 lambda函数
student_name = max(student, key=lambda k: student[k])
print(f'学生分数最高的是{student_name}, 分数为:{student[student_name]}')

# 删除分数低于60的学生。
# 方法一: 原理先收集分数小于60的 key, 再进行删除
keys_remove = []
for key,value in student.items():
    if value < 60:  # 收集
        keys_remove.append(key)

for i in keys_remove:  # 删除
    student.pop(i)

# 方法二: 收集分数低于60的学生
keys_to_remove = [key for key,value in student.items() if value < 60]
# 在字典中删除这些键
for key in keys_to_remove:
    del student[key]

# 最后打印
print(student)

2、实现冒泡排序算法。随机生成1-99之间的10个整数,存入列表中。采用冒泡排序算法对列表中的数据进行排序,输出中间过程。

py 复制代码
import random

# 生成随机数
arr = [random.randint(1,100) for i in range(10)]

for i in range(len(arr)):
    for j in range(i+1):
        if arr[i] > arr[j]:
            arr[i],arr[j] = arr[j],arr[i]
    print(arr)

3、编写一个猜数字游戏,程序随机生成一个1到100之间的整数,让用户来猜。如果用户猜的数字比实际数字小,则提示"太小了";如果用户猜的数字比实际数字大,则提示"太大了";如果用户猜对了,则输出"恭喜你猜对了!"并结束游戏。

py 复制代码
import random

rand = random.randint(1,100)

while True:
    try:
        num = int(input('请输入你猜的数值: '))
        if num > rand:
            print('猜大了')
        elif num < rand:
            print('猜小了')
        else:
            print('猜对了~~~~~')
    except:
        print('输入有问题,请重新输入!!!')

4、中国古代数学家张丘建在他的《算经》中提出了一个著名的"百元百鸡"问题,一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少想·只?编程解决以上问题。

py 复制代码
'''
设: x为公鸡,y为母鸡,z为小鸡

第一次循环中的21指的是 20(只)*5(元) = 100元
第二次循环中的34指的是 33(只) * 3(元) = 99元
'''
for x in range(21):
    for y in range(34):
        # 一共有100只,所以: 小鸡个数 = 100 - 公鸡个数 - 母鸡个数
        z = 100 - x - y
        if 5*x + 3*y + z/3 == 100:
            print(f'公鸡有{x}个,母鸡有{y}个,小鸡有{z}个.')

5、编写函数,使用递归方法计算斐波那契数列中的第n项。斐波那契数列是一个整数序列,从第3项,每个数字是前两个数字的和(F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2))。然后,程序应提示用户输入一个整数n,并输出斐波那契数列中的第n项:

py 复制代码
def bei(n):
    if n == 1 or n == 2:
        return 1
    else:
        return bei(n-1) + bei(n-2)


print(bei(20))

6、几何形状面积计算:定义一个基类Shape,包含一个方法calculate_area()。创建几个继承自Shape的子类,如Rectangle、Circle和Triangle,各自实现calculate_area()方法。创建一个函数来接受一个Shape对象并计算其面积。

py 复制代码
import math

class Shape: # 父类
    def calculate_area(self):
        pass
# 矩形
class Rectangle(Shape):
    def __init__(self,width,height):
        self.width = width
        self.height = height

    def calculate_area(self):
        return self.width * self.height
# 圆形
class Circle(Shape):
    def __init__(self,r):
        self.r = r
    def calculate_area(self):
        return self.r ** 2 * math.pi

# 三角形
class Triangle(Shape):
    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c

    def calculate_area(self):
    	# 计算机半周长
    	s = (self.a + self.b + self.c) / 2
    	# 使用海伦公式
    	area = math.sqrt(s * (s - self.a) * (s - self.b) * (s - self.c))
        return area
        
if __name__ == '__main__':
    def calculate_area(Shape):
        return Shape.calculate_area()

	# 矩形
    rec = Rectangle(20,30)  # 参数:宽,高
    print(calculate_area(rec))
	
	# 圆
    cir = Circle(5)  # 参数:半径r
    print(calculate_area(cir))
    
	# 三角形
    tria = Triangle(3,4,5)  # 参数:三条边
    print(calculate_area(tria))

7、图形绘制:定义一个基类Drawable,包含一个方法draw()。创建几个继承自Drawable的子类,如Circle、Rectangle和Line,并为它们各自实现draw()方法来模拟在画布上的绘制过程。

py 复制代码
from typing import Tuple

class Drawable:
    def draw(self):
        pass

class Circle(Drawable):  # center圆心点,指定元组类型
    def __init__(self, center: Tuple, r: int):
        self.center = center
        self.r = r
    def draw(self):
        print(f'开始绘制圆形,圆心坐标{self.center}, 半径为{self.r}')

class Rectangle(Drawable): # 矩形
    def __init__(self,width: int,height: int):
        self.width = width
        self.height = height

    def draw(self):
        print(f'开始绘制高为{self.height}, 宽为{self.width}的矩形')

class Line(Drawable):  # 线条
    def __init__(self, start:Tuple, end: Tuple): # 元组类型
        self.start = start  # 起始坐标
        self.end = end  # 结束坐标

    def draw(self):
        print(f'开始绘制线条,线条的位置为: 起始位置{self.start}, 结束位置{self.end}')

if __name__ == '__main__':
    # 创建圆形
    cir = Circle((1, 1), 3)
    cir.draw()

    # 创建矩形
    rec = Rectangle(30, 40)
    rec.draw()

    # 创建线条
    line = Line((0, 0), (10, 20))
    line.draw()
相关推荐
测试1998几秒前
2024软件测试面试热点问题
自动化测试·软件测试·python·测试工具·面试·职场和发展·压力测试
love_and_hope几秒前
Pytorch学习--神经网络--搭建小实战(手撕CIFAR 10 model structure)和 Sequential 的使用
人工智能·pytorch·python·深度学习·学习
芊寻(嵌入式)13 分钟前
C转C++学习笔记--基础知识摘录总结
开发语言·c++·笔记·学习
一颗松鼠22 分钟前
JavaScript 闭包是什么?简单到看完就理解!
开发语言·前端·javascript·ecmascript
有梦想的咸鱼_24 分钟前
go实现并发安全hashtable 拉链法
开发语言·golang·哈希算法
海阔天空_201329 分钟前
Python pyautogui库:自动化操作的强大工具
运维·开发语言·python·青少年编程·自动化
天下皆白_唯我独黑36 分钟前
php 使用qrcode制作二维码图片
开发语言·php
零意@37 分钟前
ubuntu切换不同版本的python
windows·python·ubuntu
夜雨翦春韭40 分钟前
Java中的动态代理
java·开发语言·aop·动态代理
小远yyds42 分钟前
前端Web用户 token 持久化
开发语言·前端·javascript·vue.js