2025010089张静文
判断三角形
# 输入三个数
a, b, c = map(float, input("输入三个数:").split())# 排序,让 c 最大
a, b, c = sorted([a, b, c])# 判断能不能构成三角形
if a + b <= c:print("不能构成三角形")
else:a2 = a**2b2 = b**2c2 = c**2if a2 + b2 == c2:print("直角三角形")elif a2 + b2 > c2:print("锐角三角形")else:print("钝角三角形")

2025010090殷慧湘
均方差
def mean(data):return sum(data) / len(data)
#均方差 =标准差
def mean_square_error(data):mu = mean(data)variance = sum((x - mu) ** 2 for x in data) / len(data)return variance ** 0.5
#测试
data = [2,3,4,6,8,8,9,10,11,11]
#输出
print("数据:", data)
print("均值:", mean(data))
print("均方差(标准差):",mean_square_error(data))

2025010091张译心
垂足
def get_foot(point, line):"""计算点到直线的垂足坐标:param point: 目标点 (x0, y0):param line: 直线的两个端点 (x1, y1, x2, y2):return: 垂足坐标 (x, y)"""x0, y0 = pointx1, y1, x2, y2 = linedx = x2 - x1dy = y2 - y1# 防止直线两点重合导致除零错误if dx * dx + dy * dy < 1e-16:return (x1, y1)# 计算投影参数 uu = (dx * (x0 - x1) + dy * (y0 - y1)) / (dx * dx + dy * dy)# 计算垂足坐标x = x1 + u * dxy = y1 + u * dyreturn (x, y)# --- 下面是调用部分 ---if __name__ == "__main__":print("--- 点到直线垂足计算程序 ---")# 1. 获取用户输入的点坐标# 使用 split() 分割输入的字符串,并用 map(float, ...) 转换为数字point_input = input("请输入点的坐标 (格式: x y),例如 3 4: ")x0, y0 = map(float, point_input.split())my_point = (x0, y0)# 2. 获取用户输入的直线坐标line_input = input("请输入直线的两个端点坐标 (格式: x1 y1 x2 y2),例如 0 0 5 0: ")x1, y1, x2, y2 = map(float, line_input.split())my_line = (x1, y1, x2, y2)# 3. 调用函数并传入数字result = get_foot(my_point, my_line)# 4. 打印结果print(f"\n输入的点是: {my_point}")print(f"输入的直线是: 从 {my_line[0:2]} 到 {my_line[2:4]}")print(f"计算得到的垂足坐标是: {result}")

2025010092朱翔鸽
三角形内接圆
import math#输入三个点坐标
x1, y1 = map(float, input("请输入点A坐标 x1 y1:").split())
x2, y2 = map(float, input("请输入点B坐标 x2 y2:").split())
x3, y3 = map(float, input("请输入点C坐标 x3 y3:").split())# 计算三边长
a = math.hypot(x3 - x2, y3 - y2) # BC
b = math.hypot(x3 - x1, y3 - y1) # AC
c = math.hypot(x2 - x1, y2 - y1) # AB# 半周长
p = (a + b + c) / 2# 面积(海伦公式)
S = math.sqrt(p * (p - a) * (p - b) * (p - c))# 内切圆半径
r = S / p# 内切圆周长、面积
circle_c = 2 * math.pi * r
circle_s = math.pi * r ** 2# 输出
print("=" * 30)
print(f"三边长:a={a:.2f} b={b:.2f} c={c:.2f}")
print(f"内切圆半径 r = {r:.4f}")
print(f"内切圆周长 = {circle_c:.4f}")
print(f"内切圆面积 = {circle_s:.4f}")
print("=" * 30)

2025010093惠盾
查找1-100之间素数
# 判断一个数是否是素数
def is_prime(n):if n < 2:return Falsefor i in range(2, int(n**0.5) + 1):if n % i == 0:return Falsereturn True# 找出 0~100 之间的素数
primes = [n for n in range(101) if is_prime(n)]# 输出结果
print("0-100 内的素数:")
print(primes)

2025010094谢润泽
圆外一点的切线方程
import numpy as np
import matplotlib.pyplot as pltdef tangent_lines(x0, y0, h, k, r):"""计算圆外一点 (x0,y0) 到圆 (x-h)²+(y-k)²=r² 的两条切线返回两条直线一般式 Ax+By+C=0 和两个切点坐标"""dx = x0 - hdy = y0 - kd_sq = dx ** 2 + dy ** 2d = np.sqrt(d_sq)if d < r - 1e-8:raise ValueError("点在圆内,无实数切线")if abs(d - r) < 1e-8:raise ValueError("点在圆上,只有一条切线")# 单位方向向量ux = dx / duy = dy / ds = np.sqrt(d_sq - r ** 2)# 切点坐标x1 = h + r * (ux * r - uy * s) / dy1 = k + r * (uy * r + ux * s) / dx2 = h + r * (ux * r + uy * s) / dy2 = k + r * (uy * r - ux * s) / d# 两点式转一般式def line(p1, p2):x1, y1 = p1x2, y2 = p2A = y2 - y1B = x1 - x2C = x2 * y1 - x1 * y2return A, B, Cline_a = line((x0, y0), (x1, y1))line_b = line((x0, y0), (x2, y2))return line_a, line_b, (x1, y1), (x2, y2)# ==================== 主程序示例 ====================
if __name__ == '__main__':# 圆:圆心(0,0),半径2h, k, r = 0, 0, 2# 圆外一点x0, y0 = 4, 1line1, line2, p1, p2 = tangent_lines(x0, y0, h, k, r)A1, B1, C1 = line1A2, B2, C2 = line2print("==== 切线方程(一般式 Ax+By+C=0)====")print(f"切线1:{A1:.2f}x + {B1:.2f}y + {C1:.2f} = 0")print(f"切线2:{A2:.2f}x + {B2:.2f}y + {C2:.2f} = 0")print("\n切点坐标:")print(f"切点1:({p1[0]:.3f}, {p1[1]:.3f})")print(f"切点2:({p2[0]:.3f}, {p2[1]:.3f})")# 绘图plt.figure(figsize=(6, 6))plt.axis('equal')plt.grid(True)# 画圆theta = np.linspace(0, 2 * np.pi, 200)cx = h + r * np.cos(theta)cy = k + r * np.sin(theta)plt.plot(cx, cy, 'b-', linewidth=1.5, label='圆')# 画点plt.plot(x0, y0, 'ro', markersize=8, label='外点')plt.plot([p1[0], p2[0]], [p1[1], p2[1]], 'go', label='切点')# 画切线xs = np.linspace(-5, 5, 2)if abs(B1) > 1e-8:ys1 = (-A1 * xs - C1) / B1plt.plot(xs, ys1, 'm--', linewidth=1)if abs(B2) > 1e-8:ys2 = (-A2 * xs - C2) / B2plt.plot(xs, ys2, 'm--', linewidth=1)plt.xlim(-5, 5)plt.ylim(-5, 5)plt.title('圆外一点切线')plt.legend()plt.show()

2025010095徐雨轩
闰年的判断
def is_leap_year(year):# 闰年规则:# 1. 能被4整除但不能被100整除,是闰年# 2. 能被400整除,是闰年if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):return Trueelse:return False# 测试示例
year = int(input("请输入年份:"))
if is_leap_year(year):print(f"{year} 年是闰年")
else:print(f"{year} 年不是闰年")

2025010096刘加鑫
3×3 乘法
# 3×3 乘法表
for i in range(1, 4):for j in range(1, 4):print(f"{i} × {j} = {i*j}", end="\t")print()

2025010097马浩
排序算法
nums = [6, 8, 10, 2, 1] nums.sort() # 直接修改原列表 print(nums) # 输出: [1, 2, 6,8 , 10]# 或者不修改原列表,返回新列表 nums = [6, 8, 10, 2, 1] sorted_nums = sorted(nums) print(sorted_nums) # 输出: [1, 2, 6, 8, 10]

2025010098韩晓媛
三角形外接圆
import math# 输入点
def input_point(name):while True:try:s = input(f"请输入点 {name} 坐标 x y(用空格分隔):")x, y = map(float, s.split())return (x, y)except:print("输入格式不对,请重新输入")A = input_point("A")
B = input_point("B")
C = input_point("C")x1, y1 = A
x2, y2 = B
x3, y3 = C# 求外接圆圆心和半径
a1 = 2 * (x2 - x1)
b1 = 2 * (y2 - y1)
c1 = x2**2 + y2**2 - x1**2 - y1**2a2 = 2 * (x3 - x2)
b2 = 2 * (y3 - y2)
c2 = x3**2 + y3**2 - x2**2 - y2**2det = a1 * b2 - a2 * b1if abs(det) < 1e-10:print("三点共线,不能构成三角形")
else:ox = (c1 * b2 - c2 * b1) / detoy = (a1 * c2 - a2 * c1) / detr = math.hypot(ox - x1, oy - y1)print("\n外接圆圆心:({:.3f}, {:.3f})".format(ox, oy))print("外接圆半径:{:.3f}".format(r))

2025010099张嘉诚
一元二次方程和直线的交点
import mathdef solve_intersection(a, b, c, k, d):"""求抛物线 y = a*x² + b*x + c 与直线 y = k*x + d 的交点返回:交点列表 [(x1,y1), (x2,y2)] 或 []"""# 联立后新一元二次方程系数A = aB = b - kC = c - ddelta = B**2 - 4*A*Cpoints = []if delta > 0:x1 = (-B + math.sqrt(delta)) / (2*A)x2 = (-B - math.sqrt(delta)) / (2*A)y1 = k * x1 + dy2 = k * x2 + dpoints.append((x1, y1))points.append((x2, y2))elif delta == 0:x = -B / (2*A)y = k * x + dpoints.append((x, y))# delta < 0 无实根,返回空return points# ======================
# ======================
if __name__ == "__main__":# 抛物线 y = ax² + bx + ca = 1b = -4c = 3# 直线 y = kx + dk = 2d = -5res = solve_intersection(a, b, c, k, d)print("交点:", res)

2025010100霍延萌
姓氏排名前三
from collections import Counter #全班姓名列表
students = [ "惠盾", "谢润泽", "徐雨轩", "刘加鑫", "马浩", "张嘉诚", "袁泉", "黄俊", "许乐乐", "张中光","钟海洋", "叱干育", "黄帅豪", "王义刚", "刘司拓", "田昌盛", "千阳坤", "董晨鑫", "刘杨龙", "任鸿杰", "张静文", "殷慧湘", "张译心", "朱翔鸽", "韩晓媛", "霍延萌", "沈玉婷", "孙瑞妍", "王怡萱", "石蕊鑫", "殷佳锐", "康静茹", "李欣栎", "陈影", "淡郑雪", "郑舒萍", "胡鑫", "刘芮孜", "贾姝慧", "董玥卓", "李佳雨",]
surnames = [name[0] for name in students] #提取姓氏
surname_count = Counter(surnames) #统计姓氏出现次数
top3_surnames = surname_count.most_common(3) #按出现次数降序排序,取前三
print ("2025级数应三班姓氏排名前三:") #输出结果
for i, (surname,count ) in enumerate(top3_surnames, 1):print(f"{i}名: {surname}姓,共{count}人")

2025010101袁泉
阶乘
n = int(input("请输入一个整数:"))
result = 1
for i in range(1, n + 1):result *= i
print(f"{n}! = {result}")

2025010102沈玉婷
因式分解(输出因式)
def factor(n):res = {}# 分解 2while n % 2 == 0:res[2] = res.get(2, 0) + 1n = n // 2# 分解奇数i = 3while i * i <= n:while n % i == 0:res[i] = res.get(i, 0) + 1n = n // ii += 2if n > 1:res[n] = 1return resdef show_factor(num):if num < 2:return "无法分解"fac = factor(num)parts = []for p in sorted(fac):cnt = fac[p]if cnt == 1:parts.append(str(p))else:parts.append(f"{p}^{cnt}")return " × ".join(parts)# 主程序if __name__ == "__main__":n = int(input("请输入要分解的整数:"))print(f"{n} = {show_factor(n)}")

2025010103黄俊
找出101到200内的素数
# 找出 101~200 之间的素数
import mathprimes = []for num in range(101, 201):is_prime = True# 只需要检查到平方根即可for i in range(2, int(math.sqrt(num)) + 1):if num % i == 0:is_prime = Falsebreakif is_prime:primes.append(num)print("101~200之间的素数有:")
print(primes)

2025010104许乐乐
将军饮马
import math# 1. 设定坐标(你可以随便改)
Ax, Ay = 1, 4 # 将军起点
Bx, By = 5, 1 # 军营终点
min_dist = float('inf') # 最短距离
best_x = 0 # 最好的饮马点 x# 2. 在河上从 x=0 到 x=6,每隔 0.01 试一个点
for x in range(0, 601):px = x / 100 # 饮马点 P(px, 0)py = 0# 算 AP 长度ap = math.sqrt((Ax - px)**2 + (Ay - py)**2)# 算 PB 长度pb = math.sqrt((Bx - px)**2 + (By - py)**2)total = ap + pb# 记录最短的if total < min_dist:min_dist = totalbest_x = px# 3. 输出结果
print("最优饮马点 P:(" + str(round(best_x,2)) + ", 0)")
print("最短路径长度:" + str(round(min_dist,2)))

2025010105张中光
(m,n)整除7不能整除5的输出


2025010106钟海洋
# 生成所有由 0,1,2,3,4 组成的无重复三位数
nums = [0,1,2,3,4]
count = 0
all_three_digits = []for a in nums:# 百位不能为 0if a == 0:continuefor b in nums:if b == a:continuefor c in nums:if c == a or c == b:continuenum = a*100 + b*10 + call_three_digits.append(num)count += 1print("总共有:", count, "种")
print("最大的三位数:", max(all_three_digits))
print("最小的三位数:", min(all_three_digits))

2025010107孙瑞妍
计算圆外一点到圆的切线夹角
import math
x0, y0 = 4, 0 # 圆外点 P
a, b = 0, 0 # 圆心 C
r = 2 # 半径
d = math.sqrt((x0 - a)**2 + (y0 - b)**2)
theta = math.asin(r / d)
angle_rad = 2 * theta
angle_deg = math.degrees(angle_rad)
print(f"两条切线的夹角 = {angle_deg:.2f} 度")

2025010108叱干育
字符串统计数字英文汉字的个数


2025010109 黄帅豪
统计成绩低于平均分的学生
# 姓名和成绩列表
names = ["张晴", "李睿", "王璐", "赵凯", "刘畅", "陈静", "周宇", "吴雪", "郑浩", "孙萌"]
scores = [78, 56, 63, 82, 97, 91, 60, 74, 39, 85]# 计算平均分(直接用sum求和)
avg = sum(scores) / len(scores)
print("班级平均分:", avg)# 找出并打印低于平均分的学生
print("成绩低于平均分的学生:")
for i in range(len(names)):if scores[i] < avg:prin+t(names[i], ":", scores[i])

2025010110 王义刚

2025010112 王怡萱
行列式求秩
import math
def matrix_rank(mat, tol=1e-9):
# 复制原矩阵,避免修改原数据
mat = [row[:] for row in mat]
rows = len(mat)
cols = len(mat[0]) if rows > 0 else 0
rank = 0
for col in range(cols):
# 选主元
pivot_row = rank
for r in range(rank, rows):
if abs(mat[r][col]) > abs(mat[pivot_row][col]):
pivot_row = r
# 主元太小,跳过该列
if abs(mat[pivot_row][col]) < tol:
continue
# 交换主元行和当前rank行
mat[rank], mat[pivot_row] = mat[pivot_row], mat[rank]
pivot_val = mat[rank][col]
# 消去下方所有行
for r in range(rows):
if r != rank and abs(mat[r][col]) > tol:
factor = mat[r][col] / pivot_val
for c in range(col, cols):
mat[r][c] -= factor * mat[rank][c]
rank += 1
if rank == rows or rank == cols:
break
return rank
if __name__ == "__main__":
# 测试矩阵
A = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# 3阶单位矩阵
I = [
[1, 0, 0],
[0, 1, 0],
[0, 0, 1]
]
print(f"矩阵 A 的秩 = {matrix_rank(A)}")
print(f"矩阵 I 的秩 = {matrix_rank(I)}")

2025010113石蕊鑫
向量乘法(点乘,叉乘)
点乘
v1=[1,2,3] #定义两个向量
v2=[4,5,6]
dot_product=sum(a*b for a,b in zip(v1,v2)) #计算点积
print("向量1",v1)
print("向量2",v2)
print("向量点乘结果",dot_product)

叉乘
def cross_product(v1,v2): #空间向量叉乘公式x=v1[1]*v2[2]-v1[2]*v2[1]y=v1[2]*v2[0]-v1[0]*v2[2]z=v1[0]*v2[1]-v1[1]*v2[0]return[x,y,z]
a=[1,2,3] #两个空间向量
b=[4,5,6]
result = cross_product(a,b)
print("向量a=",a)
print("向量b=",b)
print("a × b =",result)

2025010114殷佳锐
一元二次方程
import math
# 输入 a, b, c
a = float(input("请输入a: "))
b = float(input("请输入b: "))
c = float(input("请输入c: "))
if a == 0:print("这不是一元二次方程!")
else:# 计算判别式delta = b**2 - 4*a*cprint(f"判别式 Δ = {delta}")if delta > 0:# 两个不同实根x1 = (-b + math.sqrt(delta)) / (2*a)x2 = (-b - math.sqrt(delta)) / (2*a)print(f"方程有两个不同实根:x1 = {x1:.2f}, x2 = {x2:.2f}")elif delta == 0:# 一个实根(重根)x = -b / (2*a)print(f"方程有一个重根:x = {x:.2f}")else:# 复数根real = -b / (2*a)imag = math.sqrt(-delta) / (2*a)print(f"方程有两个共轭复根:")print(f"x1 = {real:.2f} + {imag:.2f}i")print(f"x2 = {real:.2f} -{imag:.2f}i")

2025010115康静茹
三边长判断三角形类型
# 输入三边长度
a = float(input("请输入第一条边:"))
b = float(input("请输入第二条边:"))
c = float(input("请输入第三条边:"))# 先排序,方便用最大边判断
sides = sorted([a, b, c])
x, y, z = sides # z 最大# 判断能否构成三角形
if x + y > z:# 判断角z2 = z ** 2xy2 = x ** 2 + y ** 2if z2 == xy2:print("直角三角形")elif z2 < xy2:print("锐角三角形")else:print("钝角三角形")# 判断边的类型if a == b == c:print("等边三角形")elif a == b or b == c or a == c:print("等腰三角形")else:print("普通三角形")else:print("不能构成三角形")

2025010117李欣栎
100以内3和5的倍数
for i in range(1,101):if i%3==0 and i%5==0:#100以内同时是3和5的倍数print(i)

2025010118 陈影
文字倒序输出(输出文字)
#获取用户输入的文字
text=input("请输入一段文字:")
#定义空字符串存储倒序结果
reverse_text=""
#遍历每一个字符
for char in text:#把当前字符加到结的文字果前面,实现倒序reverse_text=char+reverse_text
#输出倒序后的文字
print("倒序结果:",reverse_text)

2025010119 淡郑雪
因式分解
def factorize_show_product(n):if not isinstance(n, int) or n < 1:return "请输入正整数"# 存储所有 a×b = n 的组合product_pairs = []for i in range(1, int(n**0.5) + 1):if n % i == 0:product_pairs.append(f"{i} × {n//i}")# 质因数分解def prime_factors(num):factors = []while num % 2 == 0:factors.append(2)num //= 2i = 3while i * i <= num:while num % i == 0:factors.append(i)num //= ii += 2if num > 1:factors.append(num)return " × ".join(map(str, factors))prime_product = prime_factors(n)# 输出结果print(f"{n} 的所有乘法组合:")print(" " + ", ".join(product_pairs))print(f"{n} 的质因数分解乘积:")print(f" {n} = {prime_product}")# 测试示例
test_num = 36
factorize_show_product(test_num)

2025010121 郑舒萍
1000以内3和7的倍数和
sum_num = 0
for i in range(1, 1001):if i % 3 == 0 or i % 7 == 0:sum_num += i
print(sum_num)

20205010122 田昌盛
# 点乘:对应元素相乘再相加
def dot(v1, v2):return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2]# 叉乘:3D向量才有叉乘
def cross(v1, v2):x = v1[1]*v2[2] - v1[2]*v2[1]y = v1[2]*v2[0] - v1[0]*v2[2]z = v1[0]*v2[1] - v1[1]*v2[0]return [x, y, z]# 测试
if __name__ == "__main__":a = [1, 2, 3]b = [4, 5, 6]print("向量 a:", a)print("向量 b:", b)print("点乘结果:", dot(a, b))print("叉乘结果:", cross(a, b))

2025010124 胡鑫
十个评委打分求平均分
# 输入10个评委分数
scores = []
for i in range(10):score = float(input(f"请输入第{i+1}个评委分数:"))scores.append(score)# 去掉一个最高分和一个最低分
scores.remove(max(scores))
scores.remove(min(scores))# 计算平均分
average = sum(scores) / len(scores)# 输出结果,保留2位小数
print(f"去掉高低分后的平均分:{average:.2f}")

2025010125 刘芮孜
给十个数判断有几个直角三角形
# 从10个数中找出所有能组成直角三角形的组合
import itertoolsdef count_right_triangles(sides):count = 0# 取出所有3个不同边的组合for tri in itertools.combinations(sides, 3):a, b, c = sorted(tri) # 从小到大排序,c最大# 勾股定理:a² + b² = c²if a**2 + b**2 == c**2 and a > 0 and b > 0 and c > 0:count += 1return count# 这里输入你的10个边长
nums = [3, 4, 5, 6, 8, 10, 5, 12, 13, 7]
print(f"能组成直角三角形的个数:{count_right_triangles(nums)}")

2025010127 刘杨龙
三角形内切圆
import math# 三角形三个顶点坐标
x1, y1 = 0, 0
x2, y2 = 4, 0
x3, y3 = 0, 3# 1. 计算三边长度
a = math.hypot(x3 - x2, y3 - y2)
b = math.hypot(x3 - x1, y3 - y1)
c = math.hypot(x2 - x1, y2 - y1)# 2. 半周长
p = (a + b + c) / 2# 3. 三角形面积(海伦公式)
area = math.sqrt(p * (p - a) * (p - b) * (p - c))# 4. 内切圆半径
r = area / p# 5. 内切圆圆心坐标
cx = (a * x1 + b * x2 + c * x3) / (a + b + c)
cy = (a * y1 + b * y2 + c * y3) / (a + b + c)# 输出结果
print("内切圆圆心:", (cx, cy))
print("内切圆半径:", r)

2025010128 贾姝慧
统计姓氏前三
students = ["惠盾", "霍延萌", "殷慧湘", "钟海洋", "陈影", "孙瑞妍", "马浩", "许乐乐","殷佳锐", "李佳雨", "王义刚", "张译心", "李欣栎", "王怡萱", "康静茹", "石蕊鑫","沈玉婷", "田昌盛", "董玥卓", "胡鑫", "刘芮孜", "郑舒萍", "贾姝慧", "韩晓媛","刘司拓", "刘杨龙", "张静文", "张嘉诚", "袁泉", "朱翔鸽", "黄帅豪", "淡郑雪","黄俊", "刘加鑫", "任鸿杰", "董晨鑫", "谢润泽", "徐雨轩", "叱干育", "张中光"
]from collections import Counter# 提取姓氏(处理复姓)
surnames = []
for name in students:if name.startswith("叱干"):surnames.append("叱干")else:surnames.append(name[0])# 统计并取前三名
top3 = Counter(surnames).most_common(3)# 输出结果
print("姓氏排名前三:")
for i, (xing, num) in enumerate(top3, 1):print(f"{i}. {xing}:{num}人")

2025010130 任鸿杰
超市小票
import redef calculate_rice_total(receipt_text):"""从超市小票文本中,汇总所有含「米」字的商品价格:param receipt_text: 超市小票字符串:return: 米类商品列表、总价格"""# 匹配:包含“米”,且以 小数价格 结尾pattern = re.compile(r'^.*米.*?(\d+\.\d{2})$', re.M | re.I)rice_items = []total = 0.0for line in receipt_text.strip().splitlines():line = line.strip()match = pattern.search(line)if match:price = float(match.group(1))rice_items.append((line, price))total += pricereturn rice_items, totalif __name__ == '__main__':# 在这里粘贴你的小票文本receipt = """
超市购物小票
------------------------
苏打水水 2.00
面包 3.50
东北大米 49.90
小米 12.80
洗衣液 18.90
------------------------
合计 87.10"""rice_list, total_price = calculate_rice_total(receipt)print("=== 含「米」商品汇总 ===")for item, price in rice_list:print(item)print(f"\n含米商品总价:{total_price:.2f} 元")

2025010131 董玥卓
直线方程上的点做垂足
def get_foot_of_perpendicular(A, B, C, x0, y0):"""求点 (x0, y0) 到直线 Ax + By + C = 0 的垂足 (x, y):param A, B, C: 直线一般式 Ax + By + C = 0 的系数:param x0, y0: 已知点坐标:return: 垂足 (x, y)"""denominator = A**2 + B**2if denominator == 0:raise ValueError("A 和 B 不能同时为 0,否则不是一条直线")# 垂足公式推导x = (B * (B * x0 - A * y0) - A * C) / denominatory = (A * (-B * x0 + A * y0) - B * C) / denominatorreturn (x, y)# ------------------- 示例 1:点到直线的垂足 -------------------
if __name__ == "__main__":# 直线:2x - y + 1 = 0 → A=2, B=-1, C=1A, B, C = 2, -1, 1# 已知点:(3, 4)x0, y0 = 3, 4foot = get_foot_of_perpendicular(A, B, C, x0, y0)print(f"点 ({x0}, {y0}) 到直线 {A}x + {B}y + {C} = 0 的垂足是:{foot}")# 示例 2:垂直于 x 轴的直线 x = 5A2, B2, C2 = 1, 0, -5x02, y02 = 2, 3foot2 = get_foot_of_perpendicular(A2, B2, C2, x02, y02)print(f"点 ({x02}, {y02}) 到直线 {A2}x + {B2}y + {C2} = 0 的垂足是:{foot2}")

2025010132 李佳雨
行列式的序
def inversion_number(perm):"""计算一个排列的逆序数:param perm: 列表形式的排列 (元素为互不相同的数字):return: 逆序数"""n = len(perm)count = 0for i in range(n):for j in range(i + 1, n):if perm[i] > perm[j]:count += 1return count# 示例 1:计算排列 [3, 1, 2] 的逆序数
perm1 = [3, 1, 2]
inv1 = inversion_number(perm1)
print(f"排列 {perm1} 的逆序数为: {inv1}, 符号为: {(-1)**inv1}") # 输出: 2, 1# 示例 2:计算排列 [2, 4, 1, 3] 的逆序数
perm2 = [2, 4, 1, 3]
inv2 = inversion_number(perm2)
print(f"排列 {perm2} 的逆序数为: {inv2}, 符号为: {(-1)**inv2}") # 输出: 3, -1

