24级数应一班第二次作业
2024010030葛玉霖
def determinant_3x3(matrix):
result = 0
for j in range(3):
sign = (-1) ** j
element = matrix[0][j]
submatrix = [row[:j] + row[j+1:] for row in matrix[1:]]
det_sub = submatrix[0][0] * submatrix[1][1] - submatrix[0][1] * submatrix[1][0]
result += element * sign * det_sub
return result
matrix = [
[2, 3, 4],
[5, 6, 7],
[8, 9, 1]
]
print(determinant_3x3(matrix))
2024010020范佳瑶
year = int(input("请输入年份: "))
month = int(input("请输入月份: "))
day = int(input("请输入日期: "))
days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
days[1] = 29
sum_days = sum(days[:month - 1]) + day
print(f"{year}年{month}月{day}日是{year}年的第{sum_days}天。")

2024010022房欣愉
def factorize(num):
factors = []
i = 2
while num > 1:
while num % i == 0:
factors.append(i)
num //= i
i += 1
return factors
num = int(input("请输入一个整数: "))
result = factorize(num)
print(f"{num} 的因数分解结果为: {' * '.join(map(str, result))}")

2024010034郝国庆
for num in range(100, 1000):
ge = num // 100
shi = (num // 10) % 10
bai = num % 10
if num == ge ** 3 + shi ** 3 + bai ** 3:
print(num)
2024010011崔佳欢
text = "今天天气真好。你打算去哪里玩?我们一起去公园吧!"
sentences = []
start = 0
for i, char in enumerate(text):
if char in ["。","?","!"]:
sentences.append(text[start:i + 1])
start = i + 1
print("句子数量:", len(sentences))
for idx, sentence in enumerate(sentences, 1):
print(f"句子 {idx}: {sentence}")
2024010009程俊渊
# 导入数学库(math模块)
# 作用:提供cos(), sin(), radians()等数学函数
import math
# 使用input()获取用户输入的椭圆参数
# input()会阻塞程序,等待用户键盘输入
# int()将输入的字符串转换为整数
a = int(input("请输入椭圆的横向半径 a: ")) # a代表椭圆x轴方向的半径
b = int(input("请输入椭圆的纵向半径 b: ")) # b代表椭圆y轴方向的半径
# 创建二维列表作为画布(详细分解):
# 1. 外层列表推导式:创建高度为2b+2的行
# 2. 内层列表推导式:每行创建宽度为2a+2的列
# 3. ' ' 表示用空格初始化每个像素点
canvas = [ # 开始定义画布
[ # 开始定义行
' ' # 每个元素初始为空格
for _ in range(2*a+2) # 每行有(2a+2)个元素(_表示不需要用到的循环变量)
] # 行定义结束
for _ in range(2*b+2) # 共有(2b+2)行
] # 画布定义结束
# 绘制椭圆边缘:
# range(0,360,2): 从0°到358°,步长2°
for degree in range(0, 360,2): # degree是当前角度
# 角度转弧度(因为math的三角函数需要弧度制)
# 公式:弧度 = 角度 × π/180
radian = math.radians(degree)
# 计算椭圆上点的坐标(参数方程):
# x = a*cos(θ) → 椭圆x坐标(未平移)
# +a → 向右平移a个单位(使原点居中)
# int() → 取整(因为列表索引必须是整数)
x = int(a * math.cos(radian)) + a
# y = b*sin(θ) → 椭圆y坐标(未平移)
# +b → 向下平移b个单位(注意屏幕坐标系y轴向下)
y = int(b * math.sin(radian)) + b
# 边界检查:确保坐标在画布范围内
# 2*a+2是画布宽度,2*b+2是画布高度
if 0 <= x < 2*a+2 and 0 <= y < 2*b+2:
canvas[y][x] = '*' # 在计算出的位置放置星号
# 打印画布:
for row in canvas: # 遍历每一行(row是当前行的列表)
# ''.join(row) 将列表中的字符连接成字符串
# 例如 ['*',' ','*'] → "* *"
line = ''.join(row)
# 打印当前行
print(line) # print()会自动在末尾添加换行符
2024010001 白佳乐
names = ("杜一","wang二","张一") count =0 for name in names: if name.startswith('杜'): count +=1 print(f"姓杜的人数为:{count}")
2024010003 曹翠阁
result=[num for num in range(1,101) if num % 3==0 ]
print(result)

2024010004 曹怡欣
import datetime
# 模拟包含商品名称,价格和日期的列表,每个元素是一个元组 (商品名称,商品价格, 日期)
products = [
("商品A",890, '2025-03-05'),
("商品B",630, '2025-02-20'),
("商品C",230, '2025-01-26'),
("商品D",410, '2024-11-11')
]
for product in products:
name,price,date_str =product
date = datetime.datetime.strptime(date_str, '%Y-%m-%d')
today = datetime.datetime.today()
diff = today - date
months_diff = diff.days // 30
if months_diff > 3:
final_price = price* 0.6
elif months_diff > 2:
final_price = price* 0.7
elif months_diff >=1:
final_price = price* 0.8
else:
final_price = price
print(f"商品名称为{name},原价为{price}元,日期为{date_str},折后价格为{int(final_price)}元")
2024010006柴艺媛
s = "I love Python grammar"
words = s.split()
print(words)
new_words = [word[::-1] if len(word) % 2 != 0 else word for word in words]
print(' '.join(new_words))
2024010013邓金会
# 定义一个 5 行 3 列的矩阵
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10, 11, 12],
[13, 14, 15]
]
# 获取矩阵的行数和列数
rows = len(matrix) # 行数 = 5
cols = len(matrix[0]) # 列数 = 3
# 创建一个新的矩阵来存储转置后的结果
# 转置后的矩阵是 3 行 5 列
transposed_matrix = [[0 for _ in range(rows)] for _ in range(cols)]
# 使用嵌套的 for 循环进行转置
for i in range(rows):
for j in range(cols):
transposed_matrix[j][i] = matrix[i][j]
# 输出转置后的矩阵
print("转置后的矩阵:")
for row in transposed_matrix:
print(row)
2024010008陈雪嫣
2024010014邓希希
# 假设有一个包含身份证号的列表
id_list = ["110105199006011234",
"110105199102022345",
"110105199001023456",
"110105199103034567",
"110105199002024678",
"110105199001015789"]
# 初始化一个字典,用于存储每月生日人数
birthday_count = {month: 0 for month in range(1, 13)} # 1到12月
# 遍历身份证号列表
for id_number in id_list:
# 提取生日部分(第7到14位)
birthday = id_number[6:14]
# 提取月份(第5到6位)
month = int(birthday[4:6])
# 统计对应月份的生日人数
birthday_count[month] += 1
# 输出每月的生日人数
print("每月过生日的人数统计:")
for month, count in birthday_count.items():
print(f"{month}月: {count}人")

2024010016翟贞贞
height = 10
total_distance = 10
count = 0
while height * 0.75 >= 0.1:
height = height * 0.75
total_distance += height * 2
count += 1
print(f"总路程为: {total_distance} 米")
print(f"反弹次数为: {count} 次")

2024010017杜欣瑞
from PIL import Image
image=Image.open("R-C.gif").convert("RGB")
r,g,b=image.split()
zero_r=r.point(lambda _:0)
result=Image.merge("RGB",(zero_r,g,b))
result.save("output_no_red.jpg")
2024010018杜奕婷
def bubble_sort(arr):
n = len(arr)
count = 0
for i in range(n - 1):
for j in range(0, n - i - 1):
count += 1
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr, count
arr = [64, 34, 25, 12, 22, 90]
sorted_arr, loop_count = bubble_sort(arr)
print("排序后的数组:", sorted_arr)
print("循环次数:", loop_count)
2024010019樊子涵
import random
from collections import Counter
people = ["A", "B", "C", "D", "E", "F", "G", "H"]
year_sign_ins = [random.choice(people) for _ in range(365)]
sign_in_counts = Counter(year_sign_ins)
sorted_sign_ins = sorted(sign_in_counts.items(), key=lambda x: x[1], reverse=True)
print("年签到表中每个人的出现次数(按次数高低排序):")
for person, count in sorted_sign_ins:
print(f"{person}: {count} 次")
2024010026高文馨
colleges = {"计算机学院": 5, "经济管理学院": 3, "外国语学院": 4, "数统学院": 2, "医学院": 6}
for college, num in sorted(colleges.items(), key=lambda x: x[1]):
print(f"{college}: {num}个专业")
2024010036郝珂鑫
# 定义函数
def f(x):
return x ** 2
# 积分区间
a = 0
b = 1
# 10段积分
n = 10
dx = (b - a) / n
sum_10 = sum(f(a + i * dx) * dx for i in range(n + 1))
# 50段积分
n = 50
dx = (b - a) / n
sum_50 = sum(f(a + i * dx) * dx for i in range(n + 1))
# 100段积分
n = 100
dx = (b - a) / n
sum_100 = sum(f(a + i * dx) * dx for i in range(n + 1))
# 输出结果
print("10段积分结果:", sum_10)
print("50段积分结果:", sum_50)
print("100段积分结果:", sum_100)
何兴鹏2024010039
sales = [["2025-03-01", "商品X", 50, 80],
["2025-03-02", "商品Y", 30, 40],
["2025-03-03", "商品Z", 60, 70]]
for item in sales:
item.append(item[3] - item[2])
sales.sort(key=lambda x: x[4], reverse=True)
print("时间\t物品\t买价\t卖价\t利润")
for item in sales:
print(f"{item[0]}\t{item[1]}\t{item[2]}\t{item[3]}\t{item[4]}")
韩雨晴2024010033
def remove_before_underscore(s):
# 查找下划线的位置
underscore_index = s.find('_')
# 如果找到下划线,则返回下划线之后的子字符串
if underscore_index != -1:
return s[underscore_index + 1:]
# 如果没有找到下划线,则返回原字符串
return s
何星桦2024010038
import calendar
year=int(input("请输入年份"))
month=int(input("请输入月份"))
days=calendar.monthrange(year, month)
print(f"{year}年{month}月有{days}天")

2024010007陈富强
text = "Hello, world! This is a sample text for counting characters and words."
# 统计字符个数
character_count = len(text)
# 统计英文单词个数
word_list = text.split()
word_count = len(word_list)
print(f"字符个数: {character_count}")
print(f"英文单词个数: {word_count}")
text = input("请输入要进行替换操作的文本:")
find_str = input("请输入要查找的字符:")
replace_str = input("请输入要替换成的字符:")
new_text = text.replace(find_str, replace_str)
print("替换后的文本是:", new_text)

2024010002 白洁
def count_deals_simple():
"""直接计算组合数乘积"""
# C(52,13) = 52!/(13!×39!)
# C(39,13) = 39!/(13!×26!)
# C(26,13) = 26!/(13!×13!)
# 乘积为 52!/(13!×13!×13!×13!)
# 计算分子(52×51×...×1)
numerator = 1
for i in range(1, 53):
numerator *= i
# 计算分母(13!)^4
denominator = 1
for i in range(1, 14):
denominator *= i
denominator = denominator ** 4
return numerator // denominator
print(f"分发方式总数(纯乘法): {count_deals_simple()}")

2024010029葛思旭
for i in range(10000):
num1 = i + 100
num2 = i + 100 + 168
root1 = int(num1 ** 0.5)
root2 = int(num2 ** 0.5)
if root1 ** 2 == num1 and root2 ** 2 == num2:
print(i)
2024010027高宇涵
print("101到200之间的素数有:")
for num in range(101, 201):
if all(num % i != 0 for i in range(2, int(num**0.5) + 1)):
print(num, end=" ")

2024010028高雨晨
# 定义一个函数,用于打印字母C的图案
def print_letter_c():
# 定义字母C的图案
pattern = [
" ***** ",
" * * ",
"* *",
"* ",
"* ",
"* *",
" * * ",
" ***** "
]
# 逐行打印图案
for line in pattern:
print(line)
# 调用函数,打印字母C
print_letter_c()
2024010012党喜燕
import numpy as np
from itertools import combinations
def matrix_rank(matrix):
matrix = np.array(matrix).astype(float)
m, n = matrix.shape
if m == 0 or n == 0:
return 0
max_rank = min(m, n)
for rank in range(max_rank, 0, -1):
for rows in combinations(range(m), rank):
for cols in combinations(range(n), rank):
submatrix = matrix[np.ix_(rows, cols)]
det = np.linalg.det(submatrix)
if not np.isclose(det, 0, atol=1e-6):
return rank
return 0
if __name__ == "__main__":
test_matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print("矩阵的秩为:", matrix_rank(test_matrix))
