结构控制
目录
1.顺序结构
2.分支结构
2.1.单分支结构
2.2.二分支结构
2.3.多分支结构
2.4.嵌套分支结构
3.循环结构
3.1.while 循环结构
3.2.while...else 循环结构
PS:break 关键字
PS:pass 关键字
3.3.for 循环结构
PS:range 函数
3.4.嵌套循环
1.顺序结构
2.分支结构
2.1.单分支结构
流程图插件:
新建一个以.dio为后缀的文件:
缩进插件:
调试代码:
代码每一行左侧打断点,选 Debug Python File。
# 需求一:输入一个整数判断是否是偶数。
# 接受一个整数
n = int(input('请输入一个整数:'))
# 判断是否是偶数
if n % 2 == 0:print(f'{n}是偶数')# 需求二:用户被要求输入一个数字。然后,程序会判断这个数字是正数、零还是负数,并相应地输出不同的消息。
# 接受一个数字
n = float(input('请输入一个数字:'))
# 判断是否是正数
if n > 0:print(f'{n}是正数')
# 判断是否是负数
if n < 0:print(f'{n}是负数')
# 判断是否是 0
if n == 0:print(f'{n}是零')# 需求三:判断四位数的年份是否是闰年,如果是闰年输出是闰年。
# 接受一个四位数的年份
year = int(input('请输入一个四位数的年份:'))
# 判断是否是闰年
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:print(f'{year}是闰年')pass
# 判断是否不是闰年
if not(year % 4 == 0 and year % 100 != 0 or year % 400 == 0):print(f'{year}是平年')pass
2.2.二分支结构
# 需求一:用户被要求输入考试分数,然后程序会根据分数是否大于等于 80 判断是否及格,并输出相应结果。
score = float(input('请输入一个考试成绩:'))
if score >= 80:print('考试成绩合格')
else:print('考试成绩不合格')# 需求二:判断一个数是否为偶数。
n = int(input('请输入一个整数:'))
if(n % 2 == 0):print('是偶数')
else:print('是奇数')# 需求三:判断一个年份是否为闰年。
year = int(input('请输入一个四位数的年份'))
if(year % 4 == 0 and year % 100 != 0 or year % 400 == 0): # and 与的优先级高于 or 或print(f'{year}是闰年')
else:print(f'{year}是平年')
Markdown PDF 插件:把 Markdown 格式文件转成 PDF 导出。
语法提示插件:
在 markdown 文件中右击,选择导出方式。
# 随机生成一个 5 位数,判断是否是回文(回文就是正序和逆序的结果都是一样的)# 导入生成随机数的模块
import random# 生成一个 5 位的随机数
n = random.randint(10000, 99999)# 获取个位、十位、千位、万位
a, b, c, d = n % 10, n // 10 % 10, n // 1000 % 10, n // 10000# 判断 if
if a == d and b == c:print(f'{n}是回文数字')
else:print(f'{n}不是回文数字')
2.3.多分支结构
不管几个条件成立只会执行第一个满足条件的代码。
# 需求一:用户被要求输入学生的分数,程序根据分数的范围给出相应的评级。
# 评级:A:90 - 100], , B:[80 - 90], C:60 - 80], D:0 - 60]
score = float(input('请输入一个成绩:'))
if 90 <= score <= 100: # 连等的比较方式只有 python 语言有,其他语言没有print('考试成绩等级 A')
elif 80 <= score < 90:print('考试成绩等级 B')
elif 60 <= score < 80:print('考试成绩等级 C')
elif 0 <= score < 60:print('考试成绩等级 D')
else:print('考试成绩有误')# 需求二:用户被要求输入一个年龄,程序会根据年龄段给出相应的描述。
# 年龄段:[0 - 14], [14 - 18], [18 - 24], [24 - 35], [35 - 65], [65
# 描述: 少年, 青少年, 青年, 核动力驴, 牛马, 老牛马
age = int(input('请输入一个年龄:'))
if 0 <= age < 14:print('少年')
elif 14 <= age < 18:print('青少年')
elif 18 <= age < 24:print('青年')
elif 24 <= age < 35:print('核动力驴')
elif 35 <= age < 65:print('牛马')
elif age >= 65:print('老牛马')
else:print('年龄输入有误')# 需求三: 用户被要求输入一个月份。程序会根据月份判断所属的季节,并输出相应的季节和特定节日。
month = int(input('请输入月份:'))
if 3 <= month <= 5:print('春季')print('清明节、劳动节、妇女节')
elif 6 <= month <= 8:print('夏季')print('端午节、七夕节、中元节')
elif 9 <= month <= 11:print('秋季')print('国庆节、中秋节、重阳节、教师节')
elif month == 12 or 1 <= month <= 2:print('冬季')print('春节、元宵节、元旦、双十二')
else:print('月份输入有误')
2.4.嵌套分支结构
# 需求一 : 用户被要求输入一个分数。程序会根据分数给出相应的等级和评价。
score = float(input('请输入成绩:'))# 约束正确的范围
if 0 <= score <= 100:if 90 <= score <= 100:print('A 级\n你很优秀继续加油!')elif 80 <= score < 90:print('B 级\n还是不错的继续加油!')elif 60 <= score < 80:print('C 级\n你已经过关了继续加油!')else:print('D 级\n你的态度不错继续加油!')pass # pass 关键字,没有任何含义,只是作为语法正确的占位符
else:print('成绩有误')pass# 需求二:用户被要求输入一个年份和一个月份。程序会根据输入的年份和月份判断该月份有多少天。
year, month = int(input('请输入一个年份:')), int(input('请输入 一个月份:'))if 1000 <= year <= 9999 and 1 <= month <= 12:# 定义一个变量保存天数days = 31if month == 4 or month == 6 or month == 9 or month == 11:days = 30elif month == 2:if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:days = 29else:days = 28print(f'{year}年{month}月,一共{days}天')
else:print('年份或月份输入有误')# 需求三:用户被要求输入购买金额和会员等级。程序会根据购买金额和会员等级计算折扣后的支付金额。
# 如果会员等级是"普通会员" ,并且购买金额大于等于 1000 ,则折扣为 0.9 (九折优惠),否则不打折。
# 如果会员等级是"高级会员" ,并且购买金额大于等于 500 ,则折扣为 0.8 (八折优惠),否则不打折。
# 如果会员等级是"至尊会员" ,折扣为 0.7 (七折优惠)。
# 如果会员等级不属于上述情况,则不打折。
# 1、通过 input 函数输入购买金额和会员等级
money, level = float(input('请输入消费金额:')), input('请输入会员等级:')# 定义一个标记
flag = True# 2、判断会员等级
# python 3.10 开始支持定值判断(无法支持范围判断)的分支结构语法 match(类似于 java 中的 switch 语句,excel 中也有 switch 函数)。
match level:case '普通会员':if money >= 1000:money *= 0.9passcase '高级会员':if money >= 500:money *= 0.8passcase '至尊会员':money *= 0.7passcase _: # _ 表示前面 3 个都不满足,则执行此条flag = Falseprint('您的会员等级不对')pass# if flag:
# print(f'您的会员等级是:{level}, 您最后需要支付的金额是:{money}')
# else:
# print(f'您最后需要支付的金额是:{money}')# 三目运算符(二分类问题的简写)
# 语法(只有 python 有):
# 条件成立的结果 if 条件 else 条件不成立的结果
print('-' * 30)
print(f'您的会员等级是:{level},' if flag else '', f'您最后需要支付的金额是:{money}', sep = '')
3.循环结构
3.1.while 循环结构
# 需求一: 打印 1 ~ 10 之间的整数。
# 使用 while 循环做循环次数固定的场景需要记住以下步骤:
# 1、定义循环变量并初始化(给一个值)
# 2、确定循环条件
# 3、确定循环体
# 4、循环变量改变
# control + c 强制停下程序
n = 1
while n <= 10:print(n)n += 1# 需求二:打印 1 ~ 10 之间的偶数。
n = 1
while n <= 10:if n % 2 == 0:print(n)n += 1pass# 需求三: 用户被要求输入一个正整数。程序会使用 while 循环计算输入的正整数的阶乘。
n = int(input('请输入一个正整数:'))if n >= 1:# 定义一个变量保存阶乘的结果jc = 1# 定义循环变量i = 2while i <= n:jc *= ii += 1print(f'{n}的阶乘是:{jc}')pass
else:print('您输入的不是正整数')
# 用户输入当前日期是星期几(1 - 7 的数字即可),如果是工作日(1 - 5),天气好就去谈业务,天气不好在公司整理资料;如果是周末温度超过 30 度去游泳,不超过去爬山。# 1、输入星期
weekday = int(input('请输入今天是星期几(1 - 7)?'))# 2、判断是否是工作日
if 1 <= weekday <= 5:tq = input('请输入今天天气怎么样(好/不好)')match tq:case '好':print('出去谈业务')passcase _:print('在公司整理资料')pass
elif 6 <= weekday <= 7:c = float(input('请输入当天的温度:'))if c > 30:print('游泳')else:print('爬山')pass
else:print('输入有误')
# 判断三角形类型并计算三角形面积。
# 要求:输入三角形的三条边长度,判断是等边三角形、等腰三角形还是一般三角形,若是三角形,则计算三角形的面积输出。# 输入三角形的三条边
a, b, c = float(input('请输入三角形的第一条边:')), float(input('请输入三角形的第二条边:')), float(input('请输入三角形的第三条边:'))# 判断是否能组成三角形
if a + b > c and a + c > b and b + c > a:# 判断是否是等边三角形、等腰三角形还是一般三角形if a == b and a == c:print('等边三角形')elif a == b or a == c or b == c:print('等腰三角形')else:print('一般三角形')# 海伦公式:已知三角形的三条边,求三角形的面积# 求半周长p = (a + b + c) / 2# 计算面积# S 作为变量,会变色和一般变量颜色不一致,改为 ss = (p * (p - a) * (p - b) * (p - c)) ** 0.5print(f'三角形的面积是:{s}')pass
else:print('无法组成三角形')
# 判断是否能购买特定商品。
# 要求:输入一个人的年龄和拥有的资金数额,若年龄大于等于 18 岁且资金大于等于 1000 元,输出“可以购买高端电子产品”;若年龄小于 18 岁且资金大于等于 500 元,输出“可以购买普通电子产品”;否则输出“无法购买电子产品”# python 中没有 double, 只有 floatage, money = int(input('请输入年龄:')), float(input('请输入资金金额:'))if age >= 18 and money >= 1000:print('可以购买高端电子产品')
elif 0 < age < 18 and money >= 500:print('可以购买普通电子产品')
else:print('无法购买电子产品')
# 判断用户输入的一个字符的字符串。
# 要求:用户输入一个字符,判读该字符是大写字母、小写字母、数字还是其他字符,分别输出对应的结果。s = input('请输入一个字符:')# ASCII 编码表
# 'a': 97
# 'z': 97 + 26 - 1 = 122
# 'A': 65
# 'Z': 65 + 26 - 1 = 90
# '0': 48
# ord(str): 把单个字符转为十进制数字
print(ord(s))if 'a' <= s <= 'z':print('小写字母')
elif 'A' <= s <= 'Z':print('大写字母')
elif '0' <= s <= '9':print('数字')
else:print('其他')
3.2.while...else 循环结构
# 需求一:打印 1 ~ 10 之间的整数,条件不成立提示。
i = 1while i <= 10:print(i)i += 1
else:print('循环结束')
PS:break 关键字
break 必须在循环里用,一般放在判断里。
# 给出换购的提示语句
# 三引号里的内容是注释,但若前面用变量接收了,其就是一个变量(文本/字符串)。
# 三引号里的内容有回车换行,其变量展示也是有回车换行;而单引号和双引号要展示换行则需要用 \n。
msg = '''是否参加优惠换购活动:
1、满 50 元,加 2 元换购百事可乐饮料 1 瓶
2、满 100 元,加 3 元换购 500 ml 可乐 1 瓶
3、满 100 元,加 10 元换购 5 公斤面粉
4、满 200 元,加 10 元换购 1 个苏泊尔炒菜锅 1 个
5、满 200 元,加 20 元换购欧莱雅爽肤水 1 瓶
0、不换购
-1、退出
请选择:'''while 1:# 接收选择key = int(input(msg)) # 写变量不能加引号,不然就是文本了if key == -1:break# 通过 input 函数输入消费金额money = float(input('请输入消费金额:'))# 定义一个是否换购成功的字符串s = ''match key:case 1:if money >= 50:money += 2s = '成功换购:百事可乐饮料 1 瓶'passcase 2:if money >= 100:money += 3s = '成功换购:500 ml 可乐 1 瓶'passcase 3:if money >= 100:money += 10s = '成功换购:5 公斤面粉'passcase 4:if money >= 200:money += 10s = '成功换购:1 个苏泊尔炒菜锅 1 个'passcase 5:if money >= 200:money += 20s = '成功换购:欧莱雅爽肤水 1 瓶'passcase 0:passcase _:print('没有这项换购')print(f'您本次消费金额是:{money} RMB')print(s if s else '您本次消费未达到换购标准')
# 输入赵本山的考试成绩,显示所获奖励
# 成绩 == 100 分,爸爸给他买辆车
# 成绩 >= 90 分,妈妈给他买 MP4
# 90 分 > 成绩 >= 60 分,妈妈给他买本参考书
# 成绩 < 60 分,什么都不买# 接收赵本山的成绩
score = float(input('请输入赵本山的成绩:'))if 0 <= score <= 100:if score == 100:print('爸爸给他买辆车')elif score >= 90:print('妈妈给他买 MP4') elif 90 > score >= 60:print('妈妈给他买本参考书')else:print('什么都不买') pass
else:print('成绩有误')
# 计算 100 以内偶数之和,编程实现:计算 100 以内(包括 100)的偶数之和# 定义循环变量并初始化为 2
i = 2# 定义变量保存偶数和
sum_ = 0 # sum 是关键字,所以定义变量需要加 _,一般加下划线while i <= 100:sum_ += ii += 2print(f'100 以内偶数和是:{sum_}')
PS:pass 关键字
没有任何实际意义只是作为占位符使用。主要就是为了保证语法不出错误。
3.3.for 循环结构
如果循环次数固定,那么首先选 for 循环;如果循环次数不固定,那么首先选 while 循环。
循环条件不能是数字,数字是不可迭代分割的。
PS:range 函数
若 range 给 2 个值,是 start 和 end,若要改 step,则 range 要给 3 个值。
range(start, end, step) 是左闭右开,包含左边 start,不包含右边 end。
⚠️在绝大多数情况下,只要涉及到范围,默认都是左闭右开的区间。
diff:生成随机数目前是左闭右闭。看源码会发现其本质还是左闭右开。
# 需求一: 打印 1~100 之间的偶数
# 定义变量保存偶数和
sum_ = 0
for 循环变量 in range(2, 101, 2):sum_ += 循环变量pass
print(sum_)# 需求二:如果一个数等于它的每一位数的立方和, 则称为水仙花数(一定是个三位数), 如 153 = 1 + 125 + 27 求 100 - 999 之间的全部水仙花数
# 153,370,371,407
for i in range(100, 1000):a, b, c = i % 10, i // 10 % 10, i // 100if a ** 3 + b ** 3 + c ** 3 == i:print(i)pass
3.4.嵌套循环
一般不会超过 3 层嵌套循环,会有优化方案。
多一个 %,解决方法:
# # 需求一: 打印九九乘法表# # # 第一行
# # a = 1
# # b = 1
# # print(f'{a} * {b} = {a * b}')# # 第一行优化
# b = 1
# for a in range(1, b + 1):
# print(f'{a} * {b} = {a * b}', end = '\t')
# print()# # # 第二行
# # b += 1
# # print(f'{a} * {b} = {a * b}', end = '\t') # end = '\t' 不让其换行
# # a += 1
# # print(f'{a} * {b} = {a * b}')# # 第二行优化
# b = 2
# for a in range(1, b + 1):
# print(f'{a} * {b} = {a * b}', end = '\t')
# print()# # # 第三行
# # b += 1
# # a = 1
# # print(f'{a} * {b} = {a * b}', end = '\t')
# # a += 1
# # print(f'{a} * {b} = {a * b}', end = '\t')
# # a += 1
# # print(f'{a} * {b} = {a * b}')# # 第三行优化
# b = 3
# for a in range(1, b + 1):
# print(f'{a} * {b} = {a * b}', end = '\t')
# print()# 整体优化
for b in range(1, 10):for a in range(1, b + 1):print(f'{a} * {b} = {a * b}', end = '\t')print()# 不用 \t,用空格
for b in range(1, 10):for a in range(1, b + 1):print(f'{a} * {b} = {a * b}', end = ' ' if a * b >= 10 else ' ')print()# # 多条件嵌套,一般套不明白,不建议使用
# 4 if a >= 100 else 3 if a >= 10 else ''
# 需求二: 三位数有多少种不同的组合 (要求三位数每一位都不同)
ct = 0for a in range(1, 10):for b in range(0, 10):for c in range(0, 10):if a != b and b != c and a != c:ct += 1print(ct)
# 需求三: 百钱百鸡是一个经典的数学问题,它的目标是找出给定金额下,购买一百只鸡的不同买法。
# 假设有公鸡每只 5 元,母鸡每只 3 元,小鸡 1 元 3 只。
# 每种类型的鸡都得有,且要求一百元正好购买一百只鸡。# 🐔:20,公鸡最多有 100 / 5 = 20 只
# 🐓:33,母鸡最多有 100 / 3 = 33 只
# 🐤:100 - 🐔 - 🐓for a in range(1, 20): # a 公鸡个数for b in range(1, 33): # b 母鸡个数c = 100 - a * 5 - b * 3 # c 是小鸡钱数if a + b + (c * 3) == 100:print(f'🐔:{a}, 🐓:{b}, 🐤:{c * 3}')
# 用户登录验证,验证次数最多 3 次# 定义正确的用户名和密码
username = password = 'admin'# 使用 for 循环来模拟次数
for a in range(2, -1, -1):# 接收输入的用户名和密码user = input('请输入用户名:')pwd = input('请输入密码:')if user == username and pwd == password:print(f'{user} 登录成功')breakprint(f'您还有 {a} 次机会' if a != 0 else '')
else:print('请联系管理员')
# 一辆以固定速度行驶的汽车,清晨司机看到里程表上从左到右的读数和从右到左的读数是一样的,这个数是 95859,2 小时后里程表上又出现一个新的对称数,问此车的时速是多少?新的对称数是什么?设里程表为 5 位数。
for i in range(95860, 100000):a, b, c, d = i % 10, i // 10 % 10, i // 1000 % 10, i // 10000if a == d and b == c:print(f'新的对称数是:{i},车速是:{(i - 95859) / 2} km/h')break
# 求 n!,n 由键盘输入,范围要求 3 - 15 之间,如果用户输入的数不满足条件,则提示重新输入,直到输入了正确的 n,计算阶乘并输出结果。while 1:n = int(input('请输入一个 3 - 15 之间的整数:'))if 3 <= n <= 15:breakpassjc = 1
for a in range(2, n + 1):jc *= a
print(f'{n}的阶乘是:{jc}')
# 任意输入 5 个数,找出最小数#定义一个变量保存最小值
min_ = -1 # 一般认为 -1 要不是错误,要不是没有for i in range(1, 6):n = float(input(f'请输入第 {i} 个数字:'))if i == 1:min_ = nelif n < min_:min_ = nprint(f'5 个数字的最小值是:{min_}')
# 任意输入 n 个数,当输入 -1 时结束,找出其中最大数和最小数# 定义保存最大值和最小值的变量
max_ = min_ = -1while 1:n = float(input('请输入数字(输入 -1 结束):'))if n == -1:breakelif max_ == -1:max_ = min_ = nelse:if n > max_:max_ = nelif n < min_:min_ = npassprint(f'最大值:{max_}\n最小值:{min_}' if max_ != -1 else '没有最大值和最小值')
# 猴子摘来一些桃,吃掉全部的一半,又吃了一只;第二天、第三天以后也是如此。第十天猴子一看,只剩一只桃,问猴子第一天共摘了多少只桃?# 第十天:1
# 第九天:4
# 第八天:10
# 第七天:22n = 1for i in range(9, 0, -1):n = (n + 1) * 2passprint(f'小猴子第一天摘了:{n} 个桃')
# 出 1 - 10000 之间的全部同构数,同构数指一个数出现在它的平方的右端
# 如 5 的平方是 25,5 是 25 右端的数,5 和 25 就是一对同构数# 定义一个取余的变量
n = 10for i in range(1, 10001):if n == i: # 进位n *= 10a = i ** 2if i == a % n:print(f'{i}\t{a}')
# 输出 3 - 100 之间的全部素数
ct = 0
for a in range(3, 101, 2):for i in range(2, a // 2 + 1):ct += 1if a % i == 0:breakelse:print(a, end = ', ') # end = ', ' 让其不要换行,在一行用, 分割
print('\n', ct)print('*' * 80)# 优化
ct = 0
for a in range(3, 101, 2):ct += 1if a > 7 and (a % 3 == 0 or a % 5 == 0 or a % 7 == 0 or a % 9 == 0):passelse:print(a, end = ', ') # end = ', ' 让其不要换行,在一行用, 分割
print('\n', ct)
# 计算 1 + 3!+ 5!+ ... + (2n - 1)! 前 10 项和# 定义变量保存阶乘的和
jc_sum = 0for i in range(1, 2 * 10, 2):# 定义变量保存阶乘结果jc = 1for j in range(2, i + 1):jc *= jjc_sum += jcprint(jc_sum)
# 计算 s = 1 + (1 + 2) + (1 + 2 + 3) + ... + (1 + 2 + 3 + ... + n)
n = int(input('请输入一个数字:'))
sum_ = 0# for i in range(1, n + 1):
# for j in range(1, i + 1):
# sum_ += j
# print(sum_)# 优化
s = 0
for i in range(1, n + 1):sum_ += is += sum_
print(s)
# 雨淋湿了本子上一道题,8 个数字只能看清 3 个,第 1 个数字虽然看不清,但可看出不是 1:[方框 *(方框 3 + 方框)] ^ 2 = 8 方框 方框 9,确定方框是什么数
for a in range(2, 10): # a 是第一个方框for b in range(1, 10): # b 是第二个方框for c in range(0, 10): # c 是第三个方框n = (a * (b * 10 + 3 + c)) ** 2d, e = n % 10, n // 1000if d == 9 and e == 8 and n <= 9999:print(f'[{a} x ({b}3 + {c})] ^ 2 = {n}')
# 求 100 之内的所有完备数,完备数是其各因子之和等于其本身的正数。如 6,其因子是 1,2,3,各因子之和是 6 本身。
for i in range(2, 101):a = 1for j in range(2, i // 2 + 1):if i % j == 0:a += jif a == i:print(i)
相关文章:
结构控制
目录 1.顺序结构 2.分支结构 2.1.单分支结构 2.2.二分支结构 2.3.多分支结构 2.4.嵌套分支结构 3.循环结构 3.1.while 循环结构 3.2.while...else 循环结构 PS:break 关键字 PS:pass 关键字 3.3.for 循环结构 PS:…...
Go语言中的内存分配与初始化:new与make函数详解
在Go语言中,内存分配和初始化是编程的基础操作。Go提供了两个内置函数new和make,用于不同场景下的内存分配和初始化。理解这两个函数的区别和适用场景对于编写高效、安全的Go代码至关重要。本文将详细介绍new和make函数,并提供示例说明它们的…...
The 2024 ICPC Kunming Invitational Contest
VP链接:https://codeforces.com/gym/105386 B. Gold Medal 签到题。对每一个读入的数 a,先记录已有奖牌数量,即 ,再将 a 对 k 取模。然后将 a 数组从大到小排序,将每个不足 k 的数补到 k。如果 m 有剩余,…...
对原jar包解压后修改原class文件后重新打包为jar
文章目录 背景三种修改方式1.POM中移除原jar中依赖的历史版本2.原jar它不使用pom依赖而是直接放在源码中再编译使用JarEditor 插件对源码进行修改(推荐)使用java-decompiler反编译后修改源码覆盖原class(不好用-不推荐直接跳过)提醒 参考资料-推荐阅读拓…...
【C++】ReadFile概述,及实践使用时ReadFile的速率影响研究
ReadFile 函数概述 ReadFile 是 Windows API 函数,用于从文件或设备(如串口、硬盘等)中读取数据。它是同步和异步 I/O 操作的基础函数。 函数原型 BOOL ReadFile(_In_ HANDLE hFile, // 文件或设备句柄_Out_write…...
WebGL进阶(十一)层次模型
理论基础: 效果: 源码: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"vie…...
Django:从入门到精通
一、Django背景 Django是一个由Python编写的高级Web应用框架,以其简洁性、安全性和高效性而闻名。Django最初由Adrian Holovaty和Simon Willison于2003年开发,旨在简化Web应用的开发过程。作为一个开放源代码项目,Django迅速吸引了大量的开发…...
C++设计模式行为模式———中介者模式
文章目录 一、引言二、中介者模式三、总结 一、引言 中介者模式是一种行为设计模式, 能让你减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互, 迫使它们通过一个中介者对象进行合作。 中介者模式可以减少对象之间混乱无序的依赖关系&…...
Perfetto学习大全
Perfetto 是一个功能强大的性能分析和追踪工具,主要用于捕获和分析复杂系统中的事件和性能数据,特别是在 Android 和 Linux 环境下。它的核心目标是帮助开发者深入了解系统和应用程序的运行状态,以便优化性能和诊断问题。 Perfetto的主要作用…...
管家婆财贸ERP BR040.销售单明细表变更
最低适用版本: C系列 23.8 插件简要功能说明: 销售明细表支持直接修改单据自由项1-16更多细节描述见下方详细文档 插件操作视频: 进销存类定制插件--销售单明细表变更 1. 应用中心增加菜单【销售单明细表变更】 a. 复制23.8版本销售单明细…...
2411rust,实现特征
原文 在Rust2024中,impl Trait在中位置的默认工作方式有了变化.是为了简化impl Trait,以更好地匹配人们一般的需求. 还添加了一个灵活的语法,让你需要时可完全控制. 从Rust2024开始,一直在更改,何时可在返回位置impl Trait的隐藏类型中使用泛型参数的规则: 1,即对返回位置i…...
SpringBoot3与JUnit5集成测试
你可以在 Spring Boot 3 中轻松设置和运行 JUnit 集成测试。合理使用 Spring 提供的注解和工具,可以确保测试的高效性和可靠性。以下是集成测试的步骤和示例: 1. 添加依赖 在 pom.xml 中添加 Spring Boot Starter Test 依赖,它包含 JUnit 5 …...
工程企业需要什么样的物资管理系统?为什么需要物资管理系统?
一、背景与意义 在工程项目的建设中,无论是高楼大厦的拔地而起,还是高速公路的绵延铺展,物资都是最基础的要素之一。从钢筋水泥到施工机械,任何一种物资的管理不善都可能导致项目延误、成本超支,甚至质量问题。然而&a…...
Vue + Websocket播放PCM(base64转ArrayBuffer、 字符串转ArrayBuffer)
文章目录 引言I 音视频处理相关概念和APIII 案例:基于开源库 pcm-player方式播放借助MediaSource和Audio对象播放音频流。基于原生api AudioContext 播放操作III 格式转换js字符串转ArrayBufferbase64 转 ArrayBufferIV 解决pcm-player分片播放问题引言 需求: 基于webscoket传…...
华为防火墙技术基本概念学习笔记
1.防火墙概述 1.1防火墙与交换机、路由器对比 路由器与交换机的本质是转发,防火墙的本质是控制。 防火墙与路由器、交换机是有区别的。路由器用来连接不同的网络,通过路由协议保证互联互通,确保将报文转发到目的地;交换机则通常用来组建局域…...
Mesh路由组网
Mesh无线网格网络,多跳(multi-hop)网络,为解决全屋覆盖信号,一般用于家庭网络和小型企业 原理 网关路由器(主路由,连接光猫),Mesh路由器(子路由,…...
【数据结构】七种常用排序总结
一、七种排序及其讲解 以下为七种排序的讲解: 【数据结构】插入排序——直接插入排序 和 希尔排序 【数据结构】选择排序——选择排序 和 堆排序 【数据结构】交换排序——冒泡排序 和 快速排序 【数据结构】归并排序 —— 递归及非递归解决归并排序 二、排序的…...
【在Linux世界中追寻伟大的One Piece】多线程(一)
目录 1 -> Linux线程概念 1.1 -> 什么是线程 1.2 -> 线程的优点 1.3 -> 线程的缺点 1.4 -> 线程异常 1.5 -> 线程用途 2 -> Linux线程 VS 进程 2.1 -> 线程和进程 2.2 -> 进程的多个线程共享 3 -> Linux线程控制 3.1 -> POSIX线程…...
《Python编程实训快速上手》第十天--处理CSV文件和JSON数据
CSV:简化的电子表格,被保存为纯文本文件 JSON:是一种数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,以JavaScript源代码的形式将信息保存在纯文本文件中 一、csv模块 CSV文件中的每行代表电…...
基于springboot停车场管理系统源码和论文
如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统停车场管理系统信息管理难度大,容错率低,…...
Linux的桌面
Linux的桌面是可以卸载的 的确,Linux并不像Windows,Linux本身是一个基于命令行的操作系统,在内核眼中,桌面只不过是个普通的应用程序,所以,在Linux的桌面中可以完成的事情,命令行中也基本可以完…...
Spring Boot 3.0废弃了JavaEE,改用了Jakarta EE
Spring Boot 3.0废弃了JavaEE,改用了Jakarta EE 历史背景 javax变成Jakarta的主要原因是因为Java EE项目从Oracle转移到了Eclipse Foundation,并改名为Jakarta EE。 JavaEE是从Java 1.2版本开始推出的Java企业级开发平台,最初的名称是J2EE(J…...
java-排序算法汇总
排序算法: 冒泡排序(Bubble Sort) 选择排序(Selection Sort) 插入排序(Insertion Sort) 快速排序(Quick Sort) 归并排序(Merge Sort) 堆排序&…...
C0030.Clion中运行提示Process finished with exit code -1073741515 (0xC0000135)解决办法
1.错误提示 2.解决办法 添加环境变量完成之后,重启Clion软件,然后就可以正常调用由mingw编译的opencv库了。...
如何理解JS的 异步
JS是一门单线程的语言,这是因为它运行在浏览器的渲染主线程中,而渲染主线程只有一个。 而渲染主线程承担着诸多的工作,渲染页面、执行JS都在其中运行。 如果使用同步的方式,就极有可能导致主线程产生阻塞,从而导致消…...
vsgithub
VS&GitHub项目联动(上传和克隆),创建你的第一个仓库,小白配置_vs上传代码到github-CSDN博客...
Android蓝牙架构,源文件目录/编译方式学习
Android 版本 发布时间 代号(Codename) Android 1.0 2008年9月23日 无 Android 1.1 2009年2月9日 Petit Four Android 1.5 2009年4月27日 Cupcake Android 1.6 2009年9月15日 Donut Android 2.0 2009年10月26日 Eclair Android 2.1 2…...
10 - Clickhouse集群部署以及副本和分片
目 一、副本 1、简介 2、副本写入流程 3、副本配置步骤 3.1、启动zookeeper集群 3.2、在 hallo100 的/etc/clickhouse-server/config.d 目录下创建一个名为metrika.xml 的配置文件,内容如下: 3.3、在 hallo100 的/etc/clickhouse-server/config.xml 中增加如…...
FreeRTOS的软件定时器与事件标志组
目录 1.FreeRTOS软件定时器 1.1 什么是FreeRTOS软件定时器? 1.2 学习软件定时器的意义 1.3 软件定时器的简介 1.3.1 软件定时器概述 1.3.2 编写回调函数的注意事项 1.4 定时器服务/Daemon 任务 1.4.1 定时器服务任务与队列 1.4.2 定时器相关配置 configUSE_T…...
生产制造领域的多元化模式探索
在当今全球化和信息化的时代背景下,生产制造领域正经历着前所未有的变革。随着消费者需求的多样化、市场竞争的加剧以及技术的不断进步,传统的生产制造模式已经难以满足现代企业的需求。因此,多种生产制造模式应运而生,以适应不同…...
大数据技术之SparkCore
RDD概述 什么是RDD RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象。代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。 RDD五大特性 RDD编程 RDD的创…...
element-plus的组件数据配置化封装 - table
目录 一、封装的table、table-column组件以及相关ts类型的定义 1、ATable组件的封装 - index.ts 2、ATableColumn组件的封装 - ATableColumn.ts 3、ATable、ATableColumn类型 - interface.ts 二、ATable、ATableColumn组件的使用 三、相关属性、方法的使用以及相关说明 1. C…...
蓝桥杯每日真题 - 第15天
题目:(钟表) 题目描述(13届 C&C B组B题) 解题思路: 理解钟表指针的运动: 秒针每分钟转一圈,即每秒转6度。 分针每小时转一圈,即每分钟转6度。 时针每12小时转一圈…...
c#:winform调用bartender实现打印(学习整理笔记)
效果 学习路径 C# winform调用Bartender进行自定义打印、批量打印、检索文件夹中的模板_哔哩哔哩_bilibili 一、初始环境搭建见: c#:winform引入bartender-CSDN博客https://blog.csdn.net/weixin_46001736/article/details/143989473?sharetypeblogdetail&s…...
周期法频率计的设计
目录 周期法频率计 分析: 设计过程: 周期法频率计 对于低频信号,应用周期法进行测频。周期法测频的基本原理是:应用标准频率信号统计被测信号两个相邻脉冲之间的脉冲数,然后通过脉冲数计算出被测信号的周期ÿ…...
【2024亚太杯亚太赛APMCM C题】数学建模竞赛|宠物行业及相关产业的发展分析与策略|建模过程+完整代码论文全解全析
第一个问题是:请基于附件 1 中的数据以及你的团队收集的额外数据,分析过去五年中国宠物行业按宠物类型的发展情况。并分析中国宠物行业发展的因素,预测未来三年中国宠物行业的发展。 第一个问题:分析中国宠物行业按宠物类型的发展…...
uniapp的renderjs使用
uniapp中的RenderJS主要服务于APP和H5平台,其作用包括降低逻辑层和视图层的通讯损耗,提供高性能视图交互能力,以及在视图层操作DOM和运行Web的JS库。 RenderJS是uni-app中一个特性,它允许开发者在页面中使用JavaScript直接渲…...
CPU命名那些事
一、Intel CPU命名 1. 命名结构 Intel CPU 的命名通常包含以下几个部分: 品牌 产品线 系列 代数 具体型号 后缀 例如:Intel Core i7-13700K 2. 各部分含义 品牌 Intel:表示厂商(几乎所有命名中都有)。不同品…...
【LLM】一文学会SPPO
博客昵称:沈小农学编程 作者简介:一名在读硕士,定期更新相关算法面试题,欢迎关注小弟! PS:哈喽!各位CSDN的uu们,我是你的小弟沈小农,希望我的文章能帮助到你。欢迎大家在…...
鸿蒙多线程开发——线程间数据通信对象03(sendable)
1、简 介 在传统JS引擎上,对象的并发通信开销的优化方式只有一种,就是把实现下沉到Native侧,通过Transferable对象的转移或共享方式降低并发通信开销。而开发者仍然还有大量对象并发通信的诉求,这个问题在业界的JS引擎实现上并没…...
web前端开发--动画效果
1、3D旋转 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>3D旋转</title><style type"text/css">div{/*设置大盒子样式*/width: 100px;height: 100px;/*background-color: rgba(255,0,0,0.5);*/ba…...
【数据分享】中国价格统计年鉴(2013-2024) PDF
数据介绍 犹如一座珍贵的宝库,全面而系统地记录了中国在这一时期的价格变动情况。它涵盖了丰富的内容,包括宏观经济指标、商品价格、居民消费价格以及城市物价监测等多个方面。 在宏观经济指标方面,年鉴中收录了 GDP、CPI、PPI 等重要数据&…...
鸿蒙NEXT开发案例:字数统计
【引言】 本文将通过一个具体的案例——“字数统计”组件,来探讨如何在鸿蒙NEXT框架下实现这一功能。此组件不仅能够统计用户输入文本中的汉字、中文标点、数字、以及英文字符的数量,还具有良好的用户界面设计,使用户能够直观地了解输入文本…...
TritonServer中加载模型,并在Gunicorn上启动Web服务调用模型
TritonServer中加载模型,并在Gunicorn上启动Web服务调用模型 一、TritonServer中加载模型1.1 搭建本地仓库1.2 配置文件1.3 服务端代码1.4 启动TritonServer二、Gunicorn上启动Web服务2.1 安装和配置Gunicorn2.2 启动Gunicorn三、调用模型四、性能优化与监控五、总结在深度学习…...
[UE5学习] 一、使用源代码安装UE5.4
一、简介 本文介绍了如何使用源代码安装编译UE5.4,并且新建简单的项目,打包成安卓平台下的apk安装包。 二、使用源代码安装UE5.4 注意事项: 请保证可以全程流畅地科学上网。请保证C盘具有充足的空间。请保证接下来安装下载的visual studi…...
2023AE软件、Adobe After Effects安装步骤分享教程
2023AE软件是一款由Adobe公司开发的视频编辑软件,也被称为Adobe After Effects。它在广告、电影、电视和网络视频等领域广泛应用,用于制作动态图形、特效、合成和其他视觉效果。该软件支持多种视频和音频文件格式,具有丰富的插件和预设&#…...
Xilinx 7 系列 FPGA的各引脚外围电路接法
Xilinx 7系列FPGA的外围电路接法涉及到多个方面,包括电源引脚、时钟输入引脚、FPGA配置引脚、JTAG调试引脚,以及其他辅助引脚。 本文参考资料: ds180 - 7 Series FPGAs Data Sheet - Overview ds181 - Artix 7 FPGAs Data Sheet - DC and AC…...
【LeetCode热题100】队列+宽搜
这篇博客是关于队列宽搜的几道题,主要包括N叉树的层序遍历、二叉树的锯齿形层序遍历、二叉树最大宽度、在每个数行中找最大值。 class Solution { public:vector<vector<int>> levelOrder(Node* root) {vector<vector<int>> ret;if(!root) …...
<Sqlite><websocket>使用Sqlite与websocket,实现网页端对数据库的【读写增删】操作
前言 本文是在websocket进行通讯的基础,添加数据库进行数据的存储,数据库软件使用的是sqlite。 环境配置 系统:windows 平台:visual studio code 语言:javascript、html 库:nodejs、sqlite 概述 此前,我们实现在利用websocket和socket,将网页端与下位控制器如PLC进行…...
summernote富文本批量上传音频,视频等附件
普通项目,HTML的summernote富文本批量上传音频,视频等附件(其他附件同理) JS和CSS的引入 <head><th:block th:include"include :: summernote-css" /> </head> <body><th:block th:include"include :: summernote-js" /> …...