大一下Python上机操作期末
1、定义一个字典,其中存储了不同学生的分数。字典的键是学生姓名,值是该学生的分数(0-100的整数)。完成以下任务:
添加5个元素(包括姓名和分数),其中"张三"的分数为85。 修改学生"李四"的分数为90(假设"李四"已经在字典中)。 找出字典中分数最高的学生姓名和分数。 删除分数低于60的学生。 打印出修改后的字典。
student = {
'张三' : 85 ,
'李四' : 80 ,
'王五' : 40 ,
'赵六' : 59 ,
'孙七' : 20 ,
}
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} ' )
student_name = max ( student, key= lambda k: student[ k] )
print ( f'学生分数最高的是 { student_name} , 分数为: { student[ student_name] } ' )
keys_remove = [ ]
for key, value in student. items( ) :
if value < 60 :
keys_remove. append( key)
for i in keys_remove:
student. pop( i)
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个整数,存入列表中。采用冒泡排序算法对列表中的数据进行排序,输出中间过程。
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之间的整数,让用户来猜。如果用户猜的数字比实际数字小,则提示“太小了”;如果用户猜的数字比实际数字大,则提示“太大了”;如果用户猜对了,则输出“恭喜你猜对了!”并结束游戏。
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、中国古代数学家张丘建在他的《算经》中提出了一个著名的“百元百鸡”问题,一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少想·只?编程解决以上问题。
'''
设: x为公鸡,y为母鸡,z为小鸡
第一次循环中的21指的是 20(只)*5(元) = 100元
第二次循环中的34指的是 33(只) * 3(元) = 99元
'''
for x in range ( 21 ) :
for y in range ( 34 ) :
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项:
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对象并计算其面积。
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 )
print ( calculate_area( cir) )
tria = Triangle( 3 , 4 , 5 )
print ( calculate_area( tria) )
7、图形绘制:定义一个基类Drawable,包含一个方法draw()。创建几个继承自Drawable的子类,如Circle、Rectangle和Line,并为它们各自实现draw()方法来模拟在画布上的绘制过程。
from typing import Tuple
class Drawable :
def draw ( self) :
pass
class Circle ( Drawable) :
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( )