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

  314

 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}")

屏幕截图 2026-04-06 220150

 

 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)

  屏幕截图 2026-04-06 155950

 








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))

屏幕截图 2026-03-30 091758

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}")

Screenshot_20260330093453

 

 

 

 

 

 

 

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))

屏幕截图 2026-04-12 130013

 

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}")
22

 

 

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, "个。")
屏幕截图 2026-03-30 211107

 

2025010144张博洋

回文判断

text = input("请输入一段文字:")
r_text = ""#用来储存反转后的文本

for x in text:
    # 把每个字符插到最前面
    r_text = x + r_text

if text == r_text:
    print("是回文")
else:
    print("不是回文")

屏幕截图 2026-03-30 092233

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)
屏幕截图 2026-03-30 093753

 

 


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}")

 屏幕截图 2026-05-18 084626

 

 

 

 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} 只")

 

微信图片_20260407214342_1218_78

 

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)
屏幕截图 2026-03-31 213922

 

 马相淼2025010149

# 直接定义测试数字列表
nums = [2, 23, 45]
# 从小到大排序
nums_sorted = sorted(nums)
# 输出结果
print("从小到大排序:", nums_sorted)

  

# 直接定义测试数字列表
nums = [2, 23, 45]
# 从小到大排序
nums_sorted = sorted(nums)
# 输出结果
print("从小到大排序:", nums_sorted)
  

 

微信图片_20260427081834_38_2

 

 

 

2025010150唐景泽

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

image

 

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)} 天")

联想截图_20260515191211

 

 

 2025010152刘金惺 

import random
import string

chars = string.digits + string.ascii_letters

while True:
    code = ''.join(random.sample(chars, 4))
    print("当前验证码:", code)
    input("按回车生成下一个...")
屏幕截图 2026-05-15 192702

 

 

 

 

 

 

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)
屏幕截图 2026-04-27 105056


 


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)

屏幕截图 2026-03-25 132020

 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)

屏幕截图 2026-05-15 195527

 

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}")
屏幕截图 2026-05-15 191939

 

 

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))

屏幕截图 2026-03-29 140425

 

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)
联想截图_20260329212616

 

 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)
屏幕截图 2026-03-29 215835

 

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])  # 第二行结果

屏幕截图 2026-03-25 231112

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)))

屏幕截图 2026-04-03 163852

2025010163刘志杰

计算一段文章中单词个数

text=input("输入一段英文文章")
word=text.split()
word_count=len(word)
print(f"单词总数{word_count}")

屏幕截图 2026-04-03 162745

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))

屏幕截图 2026-04-27 220401

 

 2025010165赵子月

 输入字母,反向输出

# 获取用户输入的字符串
s = input("请输入字母或字符串:")

# 定义空字符串,存储反转结果
reverse_str = ""

# 从后往前遍历字符串
for i in range(len(s) - 1, -1, -1):
    reverse_str += s[i]

# 输出反转后的结果
print("反转后的结果:", reverse_str)

屏幕截图 2026-03-28 183214

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)

image

 

 

杨书宇20205010167海燕全文有几次海燕

# 《海燕》- 马克西姆·高尔基(全文)
full_text = """在苍茫的大海上,狂风卷集着乌云。在乌云和大海之间,海燕像黑色的闪电,在高傲地飞翔。

一会儿翅膀碰着波浪,一会儿箭一般地直冲向乌云,它叫喊着,——就在这鸟儿勇敢的叫喊声里,乌云听出了欢乐。

在这叫喊声里——充满着对暴风雨的渴望!在这叫喊声里,乌云听出了愤怒的力量、热情的火焰和胜利的信心。

海鸥在暴风雨来临之前呻吟着,——呻吟着,它们在大海上飞窜,想把自己对暴风雨的恐惧, hiding 到大海深处。

海鸭也在呻吟着,——它们这些海鸭啊,享受不了生活的战斗的欢乐:轰隆隆的雷声就把它们吓坏了。

蠢笨的企鹅,胆怯地把肥胖的身体躲藏到悬崖底下……只有那高傲的海燕,勇敢地,自由自在地,在泛起白沫的大海上飞翔!

乌云越来越暗,越来越低,向海面直压下来,而波浪一边歌唱,s一边冲向高空,去迎接那雷声。

雷声轰响。波浪在愤怒的飞沫中呼叫,跟狂风争鸣。看吧,狂风紧紧抱起一层层巨浪,恶狠狠地把它们甩到悬崖上,把这些大块的翡翠摔成尘雾和碎沫。

海燕叫喊着,飞翔着,像黑色的闪电,箭一般地穿过乌云,翅膀掠起波浪的飞沫。

看吧,它飞舞着,像个精灵,——高傲的、黑色的暴风雨的精灵,——它在大笑,它又在号叫……它笑那些乌云,它因为欢乐而号叫!

这个敏感的精灵,——它从雷声的震怒里,早就听出了困乏,它深信,乌云遮不住太阳,——是的,遮不住的!

狂风吼叫……雷声轰响……

一堆堆乌云,像青色的火焰,在无底的大海上燃烧。大海抓住闪电的箭光,把它们熄灭在自己的深渊里。这些闪电的影子,活像一条条火蛇,在大海里蜿蜒游动,一晃就消失了。

——暴风雨!暴风雨就要来啦!

这是勇敢的海燕,在怒吼的大海上,在闪电中间,高傲地飞翔;这是胜利的预言家在叫喊:

——让暴风雨来得更猛烈些吧!"""

# 精准统计关键词出现次数
count_result = full_text.count("海燕")
print(f"《海燕》全文中,'海燕' 总共出现:{count_result} 次")

  屏幕截图 2026-03-29 222657

 

 袁艺伦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} 米")

屏幕截图 2026-03-29 214744

 

闵子怡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)
屏幕截图 2026-03-24 214043

 

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)} 天")

1b96303987e314c002e734b817ac6526

 

 


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))
微信图片_20260324161918_1_2

 

 杨云飞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])

Image

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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)
4c7412a882e35a09f103c431cf5b6f79

 

 

2025010175孙兰妮
输出倒三角图形

n = int(input("请输入行数: ")) for i in range(n, 0, -1): print('*' * i)
94669ba2684df7a8054799c9045c8ac8

 

 

 

 
posted @ 2026-06-17 20:44  szmtjs10  阅读(3)  评论(0)    收藏  举报