25级数应四班第二次实验(40)
| 学号 | 姓名 | 是否提交作业 |
| 2025010133 | 王子涵 | 是 |
| 2025010134 | 赵雯佳 | 是 |
| 2025010136 | 屈雨蒙 | 是 |
| 2025010137 | 刘柯凡 | 是 |
| 2025010139 | 潘佳乐 | 是 |
| 2025010140 | 杨亚洲 | 是 |
| 2025010141 | 王嘉伟 | 是 |
| 2025010142 | 杨旭洁 | 是 |
| 2025010143 | 肖雅楠 | 是 |
| 2025010144 | 张博洋 | 是 |
| 2025010145 | 黄冰冰 | 是 |
| 2025010146 | 顾芳菲 | 是 |
| 2025010147 | 刘芝怡 | 是 |
| 2025010148 | 岳嘉瑞 | 是 |
| 2025010149 | 马相淼 | 是 |
| 2025010150 | 唐景泽 | 是 |
| 2025010151 | 侯益波 | 是 |
| 2025010152 | 刘金惺 | 是 |
| 2025010153 | 范鹏展 | 是 |
| 2025010154 | 洪关瑞 | 是 |
| 2025010155 | 王状 | 是 |
| 2025010157 | 闫宸熙 | 是 |
| 2025010158 | 陈文洁 | 是 |
| 2025010159 | 成哲煜 | 是 |
| 2025010160 | 韩俊杰 | 是 |
| 2025010161 | 朱星月 | 是 |
| 2025010162 | 刘奕桐 | 是 |
| 2025010163 | 刘志杰 | 是 |
| 2025010164 | 李朋祖 | 是 |
| 2025010165 | 赵子月 | 是 |
| 2025010166 | 蒋子凡 | 是 |
| 2025010167 | 杨书宇 | 是 |
| 2025010168 | 袁艺伦 | 是 |
| 2025010169 | 闵子怡 | 是 |
| 2025010170 | 张家祺 | 是 |
| 2025010171 | 陈宣汝 | 是 |
| 2025010172 | 张景悦 | 是 |
| 2025010173 | 杨云飞 | 是 |
| 2025010174 | 刘研 | 是 |
| 2025010175 | 孙兰妮 | 是 |
2025010133王子涵
我们要找的这个数,从很小的数开始试
for x in range(1,10000):
a=x+100
b=x+268
#开平方再取整
sqrt_a=int(a**0.5)
sqrt_b=int(b**0.5)
#判断是不是平方数,平方后等于原来的数
if sqrt_a**2==a and sqrt_b**2==b:
print("找到这个数了:",x)
break

2025010134赵雯佳
求一元二次函数的最小斜率
def get_min_slope(a, b, x_left, x_right):
"""
计算一元二次函数 y = ax² + bx + c 在区间 [x_left, x_right] 上的切线最小斜率
切线斜率公式:k = 2ax + b(一次函数,极值在区间端点)
"""
k_start = 2 * a * x_left + b # 区间起点斜率
k_end = 2 * a * x_right + b # 区间终点斜率
return min(k_start, k_end) # 返回较小值
# 示例调用
if __name__ == "__main__":
a = 2
b = -4
x_left = -2
x_right = 3
min_k = get_min_slope(a, b, x_left, x_right)
print(f"区间 [{x_left}, {x_right}] 内切线最小斜率为:{min_k}")

2025010136 屈雨蒙
1、2、3、4四个数能组成多少个互不相同且无重复数字的三位数
count = 0
for a in range(1, 5):
for b in range(1, 5):
for c in range(1, 5):
if a != b and a != c and b != c:
print(a, b, c)
count += 1
print("总个数:", count)

2025010137刘柯凡
def judge_poem_type(line):
clean_line = line.strip()
char_count = len(clean_line)
if char_count == 5:
return "五言"
elif char_count == 7:
return "七言"
else:
return "未知"
def add_poem_punctuation(poem_text):
lines = [line.strip() for line in poem_text.splitlines() if line.strip()]
if not lines:
return "未输入有效诗句"
poem_type = judge_poem_type(lines[0])
res = []
for i, line in enumerate(lines):
if i % 2 == 0:
res.append(line + ",")
else:
res.append(line + "。")
result_str = "\n".join(res)
return f"判断为:{poem_type}绝句\n\n{result_str}"
if __name__ == "__main__":
print("请输入古诗(每行一句,输完按回车后按Ctrl+Z再回车结束):")
lines = []
while True:
try:
line = input()
lines.append(line)
except EOFError:
break
poem_input = "\n".join(lines)
print("\n" + "="*30)
print(add_poem_punctuation(poem_input))

2025010139潘佳乐
在6个5中找三个最小约数
number = 555555
min_divisors = []
i = 1
while len(min_divisors) < 3:
if number % i == 0:
min_divisors.append(i)
i += 1
print(f"555555 的 3 个最小约数是:{min_divisors}")

2025010140杨亚洲
将ABCD以三个为一组排列组合
from itertools import permutations
letters = ['A', 'B', 'C', 'D']
combinations = list(permutations(letters, 3))
print(f"总共有{len(combinations)}组")
print("所有组合如下:")
for combo in combinations:
print(''.join(combo))

2025010141王嘉伟
def is_prime(n):
"""判断一个数是否为质数"""
if n <= 1:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
def find_numbers(count=10):
"""找到符合条件的10个数"""
result = []
num = 2 # 从最小的自然数开始检查
while len(result) < count:
if is_prime(num) and num % 3 == 2 and num % 7 == 6:
result.append(num)
num += 1
return result
# 调用函数并输出结果
result = find_numbers()
print("符合条件的10个数:")
for idx, num in enumerate(result, 1):
print(f"{idx}. {num}")
2025010142杨旭洁
5个数用循环排序
# 定义5个数字
nums = [5, 1, 4, 2, 3]
# 外层循环,控制比较轮数
for i in range(4):
# 内层循环,相邻数字比较
for j in range(4 - i):
if nums[j] > nums[j + 1]:
# 交换两个数字
temp = nums[j]
nums[j] = nums[j + 1]
nums[j + 1] = temp
# 输出结果
print(nums)
![屏幕截图 2026-03-30 093928]()
2025010143肖雅楠
total = 1000 for number in range(1, 1001): if "3" in str(number): continue else: total -= 1 print("从1到1000含3的数字共有", total, "个。")

2025010144张博洋
回文判断
text = input("请输入一段文字:")
r_text = ""#用来储存反转后的文本
for x in text:
# 把每个字符插到最前面
r_text = x + r_text
if text == r_text:
print("是回文")
else:
print("不是回文")

2025010145 黄冰冰
找出一到一百之间的同构数
# 找出 1 到 100 之间的同构数 result = [] for num in range(1, 101): square = num ** 2 # 把数字转成字符串,比较末尾 if str(square).endswith(str(num)): result.append(num) print("1到100之间的同构数有:", result)
2025010146 顾芳菲
阶乘和
n = int(input("请输入一个正整数 n: ")) sum_fact = 0 fact = 1 for i in range(1, n + 1): fact *= i sum_fact += fact print(f"1! + 2! + ... + {n}! = {sum_fact}")

2025010147刘芝怡
# 百钱买百鸡:公鸡5钱1只,母鸡3钱1只,小鸡1钱3只
# 求:100钱买100只鸡,公鸡x、母鸡y、小鸡z各多少只
for x in range(0, 21):
for y in range(0, 34):
z = 100 - x - y
if z % 3 == 0:
if 5 * x + 3 * y + z // 3 == 100:
print(f"公鸡:{x} 只,母鸡:{y} 只,小鸡:{z} 只")

2025010148 岳嘉瑞 找大小写字母
# 完全一模一样的字符串
text = "Hello World! This is Python 3.10, I love coding."
upper = 0
lower = 0
for c in text:
if c.isupper():
upper += 1
elif c.islower():
lower += 1
print("文本内容:", text)
print("大写字母个数:", upper)
print("小写字母个数:", lower)
马相淼2025010149
# 直接定义测试数字列表
nums = [2, 23, 45]
# 从小到大排序
nums_sorted = sorted(nums)
# 输出结果
print("从小到大排序:", nums_sorted)
# 直接定义测试数字列表
nums = [2, 23, 45]
# 从小到大排序
nums_sorted = sorted(nums)
# 输出结果
print("从小到大排序:", nums_sorted)

2025010150唐景泽
# 原始列表
lst = [1, 2, 2, 3, 4, 4, 4, 5]
# 集合去重,无循环、无自定义函数
new_lst = list(set(lst))
print("去重后:", new_lst)

2025010151侯益波
def get_days(year, month):
if month < 1 or month > 12:
return "月份错误"
month_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):
month_days[1] = 29
return month_days[month - 1]
y = int(input("年:"))
m = int(input("月:"))
print(f"{y}年{m}月有 {get_days(y, m)} 天")

2025010152刘金惺
import random
import string
chars = string.digits + string.ascii_letters
while True:
code = ''.join(random.sample(chars, 4))
print("当前验证码:", code)
input("按回车生成下一个...")
2025010153范鹏展
nums_str = input("请输入一组数字,用空格隔开:")
nums = list(map(float, nums_str.split()))
print("原始数字:", nums)
# 2. 冒泡排序:两两比较,交换位置
n = len(nums)
# 外层循环:控制要比较多少轮
for i in range(n - 1):
# 内层循环:每一轮比较相邻两个数
for j in range(n - 1 - i):
print(f"正在比较:nums[{j}] = {nums[j]} 和 nums[{j + 1}] = {nums[j + 1]}")
# 如果前一个数 > 后一个数,就交换
if nums[j] > nums[j + 1]:
print(f"{nums[j]} 大于 {nums[j + 1]},交换位置")
nums[j], nums[j + 1] = nums[j + 1], nums[j]
print("交换后:", nums)
else:
print(f"{nums[j]} 小于等于 {nums[j + 1]},不交换")
print("最终结果从小到大排列",nums)
2025010154洪关瑞
a = [1,2,3,4,5]
b = [2,4,6,8]
for x in a:
if x not in b:
print("不同的数:",x)
for x in b:
if x not in a:
print("不同的数:",x)

2025010155王状
# 五言律诗自动加标点
def add_wuyan_punctuation(poem_text):
# 去掉所有空格、换行
s = poem_text.replace(" ", "").replace("\n", "")
# 每5个字一句,拆分8句(五言律诗固定8句)
sentences = [s[i:i+5] for i in range(0, 40, 5)]
res = []
for idx in range(len(sentences)):
if idx < 6:
# 前6句加逗号
res.append(sentences[idx] + ",")
else:
# 最后2句加句号
res.append(sentences[idx] + "。")
# 拼接成完整带标点律诗
return "\n".join(res)
# 用法示例
if __name__ == "__main__":
# 这里替换成你的五言律诗原文,不要加任何符号
poem = "空山新雨后天气晚来秋明月松间照清泉石上流竹喧归浣女莲动下渔舟随意春芳歇王孙自可留"
result = add_wuyan_punctuation(poem)
print(result)

2025010157闫宸熙十个随机数字方差
import random
nums = [random.randint(0, 100) for _ in range(10)]
print("随机生成的10个数字:", nums)
mean = sum(nums) / len(nums)
variance = sum((x - mean) ** 2 for x in nums) / len(nums)
print(f"平均值: {mean:.2f}")
print(f"方差: {variance:.2f}")
2025010158陈文洁 输入两个数,最小公倍数最大公约数
# 求最大公约数
def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
# 求最小公倍数
def lcm(a, b):
return a * b // gcd(a, b)
# 测试示例(不用手动输入,直接看结果)
num1 = 12
num2 = 18
print("数字1:", num1)
print("数字2:", num2)
print("最大公约数:", gcd(num1, num2))
print("最小公倍数:", lcm(num1, num2))

2025010159成哲煜 两数列取相同数
list_a = [] list_b = [] same_value = 8 list_length = 5 for _ in range(list_length): list_a.append(same_value) list_b.append(same_value) print("数列A:", list_a) print("数列B:", list_b)
2025010160韩俊杰
# 自定义一个方阵(行列式)
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
n = len(matrix)
sum_main = 0 # 主对角线
sum_anti = 0 # 逆对角线
for i in range(n):
sum_main += matrix[i][i]
sum_anti += matrix[i][n - 1 - i]
result = sum_main - sum_anti
print("矩阵:")
for row in matrix:
print(row)
print("\n主对角线和:", sum_main)
print("逆对角线和:", sum_anti)
print("对角线减逆对角线结果:", result)
2025010161朱星月
矩阵计算
# 定义两个2行2列的简单矩阵
a = [[1, 2], [3, 4]]
b = [[5, 6], [7, 8]]
# 初始化结果矩阵
res = []
# 外层循环遍历每一行
for i in range(2): # 直接指定行数2,更直观
row = []
# 内层循环遍历每一列
for j in range(2): # 直接指定列数2
row.append(a[i][j] + b[i][j]) # 核心:对应位置相加
res.append(row)
# 打印最终结果(只输出关键结果,简化输出)
print("矩阵加法结果:")
print(res[0]) # 第一行结果
print(res[1]) # 第二行结果

2025010162刘奕桐
因式分解某个数
def factorize(n):
factors = []
while n % 2 == 0:
factors.append(2)
n = n// 2
i = 3
while i * i<= n:
while n % i == 0:
factors.append(i)
n = n//i
i += 2
if n > 2:
factors.append(n)
return factors
num =int(input("请输入要因式分解的数字"))
result = factorize(num)
print(f"{num} =", "x".join(map(str,result)))

2025010163刘志杰
计算一段文章中单词个数
text=input("输入一段英文文章")
word=text.split()
word_count=len(word)
print(f"单词总数{word_count}")

2025010164李朋祖
n = 4
# 上三角
for i in range(1, n + 1):
print(" " * (n - i) + "*" * (2 * i - 1))
# 下三角
for i in range(n - 1, 0, -1):
print(" " * (n - i) + "*" * (2 * i - 1))

2025010165赵子月
输入字母,反向输出
# 获取用户输入的字符串
s = input("请输入字母或字符串:")
# 定义空字符串,存储反转结果
reverse_str = ""
# 从后往前遍历字符串
for i in range(len(s) - 1, -1, -1):
reverse_str += s[i]
# 输出反转后的结果
print("反转后的结果:", reverse_str)

2025010166蒋子凡
# 导入随机模块
import random
# 生成5个1~100的随机整数
nums = []
for i in range(5):
n = random.randint(1, 100)
nums.append(n)
print("最初5个随机数:", nums)
# 再插入1个随机数
new_num = random.randint(1, 100)
nums.append(new_num)
print("插入一个随机数后:", nums)
# 从小到大排序
nums.sort()
print("从小到大排序:", nums)

杨书宇20205010167海燕全文有几次海燕
# 《海燕》- 马克西姆·高尔基(全文)
full_text = """在苍茫的大海上,狂风卷集着乌云。在乌云和大海之间,海燕像黑色的闪电,在高傲地飞翔。
一会儿翅膀碰着波浪,一会儿箭一般地直冲向乌云,它叫喊着,——就在这鸟儿勇敢的叫喊声里,乌云听出了欢乐。
在这叫喊声里——充满着对暴风雨的渴望!在这叫喊声里,乌云听出了愤怒的力量、热情的火焰和胜利的信心。
海鸥在暴风雨来临之前呻吟着,——呻吟着,它们在大海上飞窜,想把自己对暴风雨的恐惧, hiding 到大海深处。
海鸭也在呻吟着,——它们这些海鸭啊,享受不了生活的战斗的欢乐:轰隆隆的雷声就把它们吓坏了。
蠢笨的企鹅,胆怯地把肥胖的身体躲藏到悬崖底下……只有那高傲的海燕,勇敢地,自由自在地,在泛起白沫的大海上飞翔!
乌云越来越暗,越来越低,向海面直压下来,而波浪一边歌唱,s一边冲向高空,去迎接那雷声。
雷声轰响。波浪在愤怒的飞沫中呼叫,跟狂风争鸣。看吧,狂风紧紧抱起一层层巨浪,恶狠狠地把它们甩到悬崖上,把这些大块的翡翠摔成尘雾和碎沫。
海燕叫喊着,飞翔着,像黑色的闪电,箭一般地穿过乌云,翅膀掠起波浪的飞沫。
看吧,它飞舞着,像个精灵,——高傲的、黑色的暴风雨的精灵,——它在大笑,它又在号叫……它笑那些乌云,它因为欢乐而号叫!
这个敏感的精灵,——它从雷声的震怒里,早就听出了困乏,它深信,乌云遮不住太阳,——是的,遮不住的!
狂风吼叫……雷声轰响……
一堆堆乌云,像青色的火焰,在无底的大海上燃烧。大海抓住闪电的箭光,把它们熄灭在自己的深渊里。这些闪电的影子,活像一条条火蛇,在大海里蜿蜒游动,一晃就消失了。
——暴风雨!暴风雨就要来啦!
这是勇敢的海燕,在怒吼的大海上,在闪电中间,高傲地飞翔;这是胜利的预言家在叫喊:
——让暴风雨来得更猛烈些吧!"""
# 精准统计关键词出现次数
count_result = full_text.count("海燕")
print(f"《海燕》全文中,'海燕' 总共出现:{count_result} 次")

袁艺伦2025010168炮弹任意速度任意角度射出
import random
import math
# 物理常量:重力加速度
g = 9.8
# 1. 随机生成发射参数(基础范围,可直接修改)
v0 = random.uniform(20, 100) # 初速度:20-100米/秒
theta = random.uniform(0, 90) # 发射仰角:0-90度
# 2. 计算最大弹道高度(弧度转换+核心公式)
v0y = v0 * math.sin(math.radians(theta)) # 竖直方向初速度
max_height = (v0y ** 2) / (2 * g) # 最大高度
# 3. 打印结果(保留2位小数,简洁直观)
print(f"随机初速:{v0:.2f} m/s")
print(f"随机仰角:{theta:.2f} °")
print(f"最大弹道高度:{max_height:.2f} 米")

闵子怡2025010169
def get_gender(id_card):
# 去除空格
id_card = id_card.strip()
# 判断长度是否合法
if len(id_card) not in (15, 18):
return "身份证号码长度错误"
# 提取性别位
if len(id_card) == 18:
gender_bit = id_card[16]
else:
gender_bit = id_card[-1]
# 判断奇偶
if not gender_bit.isdigit():
return "身份证号码格式错误"
if int(gender_bit) % 2 == 1:
return "性别:男"
else:
return "性别:女"
# 主程序
if __name__ == "__main__":
id_num = input("请输入身份证号码:")
print(get_gender(id_num))
![屏幕截图 2026-03-28 190018]()
2025010170张家祺
用0—4五个数字组成的五位数的最大值和最小值
# 用0-4五个数字组成不重复的五位数,0不能在首位,求最大值和最小值 #设总和统计所有组合 total = 0 # 设一个很小的最大值和一个很大的最小值 max = 0 min = 99999 # 万位 for w in range(0,5): if w == 0: continue # 第一位不能是0 # 千位 for q in range(0,5): if q == w: continue # 千位不等于万位 # 百位 for b in range(0,5): if b == w or b == q: continue # 百位不等于万位和千位 # 十位 for s in range(0,5): if s == w or s == q or s == b: continue # 十位不等于万位、千位和百位 # 个位 for g in range(0,5): if g == w or g == q or g == b or g == s: continue # 个位不等于万位、千位、百位和十位 # 组合成五位数 num = w * 10000 + q * 1000 + b * 100 + s * 10 + g #符合条件则总和加一 total = total + 1 # 替换最大值 if num > max: max = num # 比前面生成的数大 # 替换最小值 if num < min: min = num # 比前面生成的数小 print("组成的五位数共有:",total,"种") print("最大值:", max) print("最小值:", min)
2025010171陈宣汝
# 判断是否为闰年
def is_leap(year):
return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
# 每个月的天数
def days_in_month(year, month):
month_days = [31,28,31,30,31,30,31,31,30,31,30,31]
if month == 2 and is_leap(year):
return 29
return month_days[month - 1]
# 计算是一年中的第几天
def day_of_year(year, month, day):
total = 0
for m in range(1, month):
total += days_in_month(year, m)
total += day
return total
# 主程序
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = int(input("请输入日期:"))
print(f"这是 {year} 年的第 {day_of_year(year, month, day)} 天")

2025010172张景悦
斐波那契数列
def fib(n): if n<=2: return 1 return fib(n-1)+fib(n-2) #打印前10项 for n in range(1,11): print(fib(n))
杨云飞2025010173
n个数每3个除一个最后剩几个
# 输入有多少个数
n = int(input("请输入n:"))
# 用列表保存所有人,编号1~n
nums = []
for i in range(1, n+1):
nums.append(i)
# 当前数到第几个
count = 0
# 当前下标
index = 0
# 只剩1个就结束
while len(nums) > 1:
count = count + 1
# 数到3,淘汰这个人
if count == 3:
nums.pop(index)
count = 0 # 重新开始数
else:
index = index + 1
# 走到末尾,回到开头(围成一圈)
if index >= len(nums):
index = 0
print("最后剩下:", nums[0])

2025010174刘研
统计重复字母前三位
s = "supercalifragilisticexpialdocious" count = { } total_length =33 for i in range(total_length): c = s[i] # 每次只取当前位置的单个字母 if c in count: count[c] = count[c] + 1 else: count[c] = 1 result = sorted(count.items(), key=lambda x: x[1], reverse=True) top3 = result[:3] print(f"字符串总长度:{total_length},范围是 1 到 {total_length}") print("重复字母前3位:", top3)
2025010175孙兰妮
输出倒三角图形
n = int(input("请输入行数: ")) for i in range(n, 0, -1): print('*' * i)



浙公网安备 33010602011771号