清明前Python笔记

news2026/4/9 9:33:45
LESSON1 环境安装及基础一、名词解释机器语言--编译语言--自然语言解释同时Python编译编译完再交给电脑面向对象关注谁去做面向工程关注怎么做二、简介特点开源胶水语言无缝连接其他语言动态赋值决定数据类型解释型面向对象三、安装1.安装解释器官网https://www.python.org/安装路径winR检测是否安装成功geek卸载软件everything扫描软件https://www.voidtools.com/zh-cn/downloads/截图工具https://www.snipaste.com/四、写代码1.解释器中直接书写winR---Python--写代码写一句执行一句2.Python文件书写以.py结尾的文件---进入终端---到达工作路径---输入文件地址相对路径相对于当前工作目录你现在所处的目录的路径只描述 “相对位置”。绝对路径从文件系统的根目录最顶层开始完整描述文件位置的路径。代码的书写规范运算符的左右两边带一个空格五、注释1.#单行注释从#开始到这一行结束中间写的内容不会被python解释器识别2.多行注释 多行注释 “”“ 多行注释 ”“”六、输入输出1.输出print可同时输出多个参数用逗号隔开默认换行2.查看帮助信息help命令3.输入input“提示词” ​ 直到用户按回车键注意1.Python缩进决定代码层级不要随便缩进容易报错2.结束符为分号不建议或者直接换行七、变量1.定义变量是存储数据的容器是动态数据类型可链式赋值2.变量名命名规则1必须是有效字符组成的 大小写的字母、数字、下划线2不以数字开头3不能有空格4不使用关键字和保留字help”keywords“ 查看关键字5严格区分大小写6针对较长变量名采用蛇形命名(见名知义)select_username_from_students SelectUsernameFromStudents3.打印变量时不带引号八、基本数据类型1.分类int float complex复数 string bool2.type()是获取数据的数据类型的3.\去除掉字符的特殊含义\t 制表符4.字符串和变量‘ ’ 和“ ”字符串不能换行“““ ”””和‘‘‘ ’’’可以如果没有赋值给变量就是多行注释反之为字符串5.布尔类型Ture 1 False 0LESSON2 运算符一、数据类型的转换1.例子引入现象input无论输入什么最终都是字符串类型2.查看数据类型type字段isinstance字段数据类型a int(input(num1)) print(type(a)) print(isinstance(a,str)) //True 判断数据a是否是str数据类型的最终的返回结果是布尔值3.转换分类1.隐式转换print(0.10.2) #0.300000000000000042.显式转换1整数intint(x, base10) - integer //如果没有指定转换的进制默认是十进制的 print(int(111000,16)) //把用户输入的值作为十六进制进行转换 print(int(True)) //布尔值转换成数字就是0和12浮点float3字符串str4布尔值bool0和空值都为False 所有非0转换都为True5noneNone 如果函数没有设置返回值那么返回的就是None二、字符串的格式化输出1.例子引入现象Python中同类型才能拼接2.推荐的字符串格式化输出方法1.占位符占位符表示%s字符串%d整数%总宽度.小数位数f浮点数2.str.format()str.format() print(用户的math值是{},用户的年龄是:{}.format(math,age))3.f-string推荐f xxxx{变量名}xxxxxx print(f用户的math值是{math:.2f},用户的年龄是:{age})3.例子三、运算符1.算数运算符符号含义加-减*乘/除默认计算后结果为浮点数//整除向下取整%取余**幂运算2.比较运算符结果为Ture或者False符号含义赋值判断 ……Python中可以链式比较3.逻辑运算符符号含义and如果左边为假返回左边操作数左为真返回右边操作数or如果左边为真返回左边操作数左为假返回右边操作数not空为Ture 非空为False返回的是操作数本身不是Ture或者False闰年能被4整除不能被100整除4.赋值运算符符号含义-5.位运算原码直接把十进制转换成的二进制反码原码除了符号位之外其余位取反补码反码1例如-127 1000 1100 -12 1111 0011 -12反码 1111 0100 -12补码 0000 0111 7 1111 1011 补码 1111 1010 反码 1000 0101 原码 -5符号含义两位为1才为1|一个1则为1^相同为0不同为1~取反左移n位空位补0【相当于乘2的n次方】正数左边高位补0负数先变成补码左边高位补1【相当于除2的n次方】6.成员运算符in判断某个元素是否存在于某个序列中返回结果为True或Falseis存储位置是否一样判断值是否一样LESSON3 程序控制流程一、顺序结构顺序结构代码默认从上到下从左到右进行执行二、选择结构选择结构根据不同的条件执行不同的代码块1.单分支if 条件: 当条件返回的结果为True时执行if下面缩进的代码块2.双分支if 条件: 条件的结果为真时执行的代码块 else: 条件不成立的时候执行的四else下面缩进的代码3.if嵌套pass 没有实际含义就是一个占位符4.多分支if 条件1: 条件1成立时执行的代码块 elif 条件2: 条件2成立的时候执行代码 …… else: 上述的条件都不满足的时候执行的是else里面的代4.三元运算符双分支的简写 值1 if 条件 else 值2 当条件成立的时候执行值1。当条件不成立时执行值2三、循环结构循环结构当条件成立时连续重复执行一段代码1.for用来迭代容器中的每一个元素for 临时变量 in 容器|序列: 循环体重复执行的代码块2.rangerangeend //生成数字序列[0,end) rangestart,end //生成数字序列[start,end) rangestart,end,step //生成数字序列[start,end),并且步长为step生成数字序列3.while详见lesson44.手动退出循环①break直接退出循环②continue退出本次循环执行下一个循环5.enumerate作业1. 计算 1² 2² 3² … n²输入 n计算前 n 个正整数的平方和。nint(input(请输入n)) sum0 for i in range(1,n1): sumi*i print(f前n个正整数的平方和为{sum})2. 求满足条件的数输出 100~999 之间所有个位数大于十位数、且十位数大于百位数的递增数。如 123、135、246 等for i in range(100,1000): baiweii//100 shiweii//10-baiwei*10 geweii-baiwei*100-shiwei*10 if geweishiwei and shiweibaiwei: print(f{i}) else: continue3. 鸡兔同笼输入头数 h 和脚数 f穷举法求出鸡和兔各多少只。如果无解则输出无解。hint(input(请输入头数h:)) fint(input(请输入脚数f:)) for i in range(1,h1): for j in range(1,h1): if ijh and i*2j*4f: print(f鸡有{i}只兔有{j}只) else: continueAILESSON4 while1.规范写法while 条件: 循环语句 break/continue while 条件: 循环语句 break/continue else 循环体正常结束时执行的代码2.例题1.猜数电脑随机生成一个随机整数用户去猜猜三次之后询问是否继续继续则接着猜不继续则退出游戏 import random random1 random.randint(1,100) n0 while n3: guess int(input(请猜数字:)) if guessrandom1: print(猜对了游戏结束) break elif guessrandom1: print(f用户猜的数字是{guess},猜大了) n1 else: print(f用户猜的数字是{guess},猜小了) n1 if n3: choose input(用户已经输错了3次是否继续游戏n/y:) if choosen: print(退出游戏) break elif choosey: n0 print(游戏继续)ATM 系统 ATM 系统 1. 查询余额 2. 存款 3. 取款 4. 转账 5. 修改密码 6. 退出 **要求** 1. **初始密码**为 888888初始余额为 10000 元 2. **登录验证**启动后先验证密码最多 3 次3 次失败则锁定程序退出 3. **查询余额**显示当前余额 4. **存款**输入金额金额必须为正数 5. **取款**输入金额需判断余额是否充足金额必须为正数 6. **转账**输入对方账号任意字符串即可和金额需判断余额是否充足 7. **修改密码**先输入旧密码验证再输入两次新密码确认一致后修改 8. **输入非法选项**时提示无效操作 9. 每次操作后都回到主菜单直到用户选择退出 str1 ATM 系统 1. 查询余额 2. 存款 3. 取款 4. 转账 5. 修改密码 6. 退出 # 1. **初始密码**为 888888初始余额为 10000 元 # 2. **登录验证**启动后先验证密码最多 3 次3 次失败则锁定程序退出 passwd 888888 money 10000 num1 0 #记录用户输错密码的次数 while num13: password input(请输入密码) if passwordpasswd: print(密码正确) while True: print(str1) choose input(请选择你要进行的操作:) if choose 1: print(f当前账户的剩余金额是{money}) elif choose2: cun int(input(请输入存款金额)) if cun0: money cun print(f存款{cun}元成功目前的余额是{money}) else: print(请输入正确的存款金额) elif choose3: print(取款操作) qu int(input(请输入取款金额)) if qumoney: print(余额不足) else: money - qu print(f取款{qu}元成功当前的余额是{money}) elif choose4: # **转账**输入对方账号任意字符串即可和金额需判断余额是否充足 cardid input(请输入收款方的账户:) zhuan int(input(请输入转账的金额)) if zhuanmoney: print(余额不足) else: money - zhuan print(f向{cardid}成功转账{zhuan},当前的余额是{money}) elif choose5: print(开始修改密码) oldpassword input(请输入旧密码) if oldpasswordpasswd: new_passwd input(请输入新的密码) new_passwd2 input(请再次输入新的密码) if new_passwdnew_passwd2: passwdnew_passwd print(f当前的新的密码是{passwd}) else: print(两次新的密码不一致密码修改失败) else: print(旧密码输入错误更改密码失败) elif choose6: print(程序退出) break break else: print(密码错误) num11 print(f当前的错误次数是{num1}) if num13: print(程序异常退出) # while True: # if num13: # print(用户输入错误密码的次数过多程序锁定) # break # password input(请输入密码) # if passwordpasswd: # print(密码输入正确) # print(str1) # choose input(请选择你要进行的操作:) # if choose 1: # print(f当前账户的剩余金额是{money}) # elif choose2: # cun int(input(请输入存款金额)) # if cun0: # money cun # print(f存款{cun}元成功目前的余额是{money}) # else: # print(请输入正确的存款金额) # else: # num11 # print(f密码输入错误当前已经错误{num1}次)3.打印100-200之间所有的素数i 100 while i 200: is_sushu True j 2 while j i//2: if i%j0: is_sushuFalse break j1 if is_sushu: print(f{i}是素数) i13.死循环while True: jieguo input(你还爱我吗) if jieguo爱: breakLESSON5 容器一、定义可以存储多个数据的对象二、分类字符串、列表、元组、字典、集合str1 hello python dir(str)//查看对象方法的1.字符串字符串为有序序列【1】字符串的索引正向索引下标从左往右从0开始反向索引下标从右往左从-1开始通过索引下标获取单个字符即字符串名【索引下标】 索引下标超出边界会报错【2】字符串的切片截取字符串的某一小段字符串名【start:end:step】//索引下标从start开始到end-1结束步长为step组成的字符串 start加上步长要靠近end值 eg.字符串名【6:1:-1】//从下标为6切到下标为2结束步长为-1 eg.用户输入一段字符判断是否为回文 str2 input(请输入一段话) print(是回文) if str2 str2[::-1] else print(不是回文) 切片下标超出会在超出边界后自行截断【3】字符串的方法字符串是不可变的数据类型创建之后不能更改所以他的方法都是返回一个新的字符串字符串名.方法字符串的拼接print(adadacdcdcd)字符串的倍增*print(*20)字符串的成员判断inprint(c in str1)字符串的长度len返回字符串的长度 ——全局方法 len 最大索引下标长度-1 str1cdc dd print(len(str1))大小写str1 hello pYthon # 由于字符串是不变的数据类型所以它的方法都是返回一个新的字符串 # 字符串名.方法() print(str1.upper()) #转大写 print(str1.lower()) #转小写 print(str1.title()) #所有单词的首字母大写 print(str1.capitalize()) #只有第一个单词的首字母大写 print(str1.swapcase()) #大小写互换查找find返回值为从左往右第一个满足匹配的字符索引下标如果没有匹配的则返回-1找不到字符串也返回-1 str1 hello pYthon print(str1.find(pYthon))反查找rfind返回值为从右往左第一个满足匹配的字符索引下标如果没有匹配的则返回-1找不到字符串报错 str1 hello pYthon print(str1.rfind(h)) print(str1.rfind(b))查找indexprint(str1.index(B)) //返回的是从左往右的第一个满足匹配的元素的下标 找不到直接报错ValueError替换replace替换replace(旧的“新的”)——默认在字符串中全局查找替换所有匹配元素 替换replace(旧的“新的”n)——默认在字符串中查找替换n个匹配元素 print(str1.replace(h,李四)) print(str1.replace(h,李四,1))以什么开头结尾withstartswith endswith 是否以……开头、是否以……结尾 print(01-test.py.endswith(py)) print(zhngsan .startswith(z))去除左右两边无意义的空格striprint( vfvfv .strip())字符串居中centerprint(hi.center(10,))【4】串的分割和拼接分割splitstr2 h1这是我要的部分/h1 print(str2.split(,))#分割默认是以空格作为分割的,最终返回的是一个列表拼接joina -----------.join(cdcdcd) list1 [python,apple] print(,.join(list1)) print(a)2.列表【1】列表特点:1、有序的有索引下标2、可变的数据类型列表中的元素在创建之后可以进行增加和删除and更改3、可以存放任何的数据类型【2】列表的创建1、[元素1,元素2,……] 元素的数据类型可以是不一致的 2、list():list函数强行进行数据类型转换转换为列表【3】列表的方法list1 [1,2,3,4,5,6,7]在列表末尾添加一个元素appendlist1.append(zhangsan) print(list1)在列表指定位置添加一个元素insert在列表指定位置添加一个元素insert(插入位置插入元素) list1.insert(1,zhnagsan) print(list1)列表的合并列表extendlist1.extend([zhnagsan,lisi,wangmazi]) print(list1)照索引下标进行的删除元素poppop下标——删除指定下标元素 pop——删除最后一个元素根据元素的值进行删除元素removeremove元素内容——删除列表内和元素内容相同的元素 list1.remove(1) #删除元素的值为1的元素 print(list1)索引下标或者切片删除元素del删除变量del 列表【索引下标】 删除变量del 列表【startend】 list1.remove(1) #删除元素的值为1的元素 print(list1)清空列表clearlist1.clear() print(list1)更改列表名【索引下标】“元素” list1 [1,zhangsan,3,4,zhangsan,6,7,8,9,10] list1[2]zhnagsan print(list1) list1[2:4][lisi,wangwu] print(list1)查找indexindex(查找元素startend)——如果不存在报错统计元素出现次数countprint(list1.count(zhangsan)) //统计某个元素在列表当中出现的次数的翻转reverse——更改原列表排序sortreverse默认为升序 reverseFalse决定升序 reverseTrue决定降序【4】拷贝①浅拷贝copy(被复制列表只会把基本数据类型的元素重新拷贝一份如果子元素有复杂数据类型则直接用原来的内存地址②深拷贝import copy 复制列表copy.deepcopy(被复制列表eg.list4 [1,2,3,4,5,6,7,8,9,10]# 返回奇数组成的新列表 和 所有偶数组成的新列表ji_list[] ou_list[] for i in list4: \# print(i) if i%20: ​ ou_list.append(i) else: ​ ji_list.append(i) print(f奇数列表:{ji_list},\n偶数列表:{ou_list})eg. while循环实现列表元素的遍历 index 0-len(list)-1list1 [1,zhangsan,3,4,zhangsan,6,7,8,9,10] index0 while indexlen(list1)-1: print(list1[index]) index1 list1 [1,zhangsan,3,4,zhangsan,6,7,8,9,10] for index,i in enumerate(list1): print(f下标为{index}的位置元素是{i})Python运行演示https://pythontutor.com/visualize.html#modedisplay【5】其他全局函数sum,min,max,len3.元组【1】元组的特点有序但不可变的数据类型一旦声明无法更改【2】元组的创建1.tuple1 (1,2,3,4,2,2,张三) print(type(tuple1)) print(tuple1[1]) tuple1[1]lisi //元组声明之后无法更改 2、使用函数tuple():强制转换为元组的数据类型 tuple2 tuple() print(type(tuple2)) ——如果元组元素只有一个那么在元素后面必须带上逗号否则认为是字符串而不是元组【3】元组的方法统计count查找index注意元组中的可变数据类型的元素是可以进行更改的。原因是元组的对应位置只是保存了这个可变对象的内存地址tuple5 (1,2,3,[4,5,6]) tuple5[-1][1] zhnagsan print(tuple5)4.字典【1】字典的特点字典的键只要是不可变的数据类型都可以字典的值可以是任何数据类型且可变【2】字典的创建1.dict1{ } dict2dict(namezhnagsan,age21) dict3dict([(name,zhnagsan),(age,33)]) dict4 dict.fromkeys([uname,age,hobby],0) 2.dict5dict() //强制转换为元组的数据类型 创建字典 字典名.fromkeys键键默认值 空字典 dict{} dictdict【3】字典的方法查找get通过键 字典名【“键名”】——没有则报错 通过get 字典名.get“键名”——更安全如果找不到返回None不报错检查键是否存在in键名 in 字典名——返回bool值添加和修改字典名【“键名”】【“新键名”】——如果键存在则重新赋值如果不存在则创建批量更新update字典名.update“”设置默认值setdefault字典名.setdefault()——如果key存在则不生效否则设置默认值删除pop字典名.pop(“删除内容”x——根据key删除内容并且返回值删除的内容如果删除内容不存在x可以显示默认值不存在删除最后插入的键值对的popitem字典名.popitem【4】字典的遍历for i in dict: print(dict[i]) for key,value in dict.items(): print(key) print(value) print“”*205.元组结构赋值LESSON6 集合一、练习# # **题目二简易员工管理系统** # # **题目描述** # # 设计一个简易的员工信息管理系统。程序启动后会显示一个功能菜单 # # 用户可以通过输入数字来选择不同的功能。系统需要管理员工的姓名、工号和年龄。 # # **功能菜单** # # # # # # # # **具体要求** # # # # 1. **数据结构** # # 使用一个列表来存储所有员工的信息列表中的每个元素是一个字典。 # # 字典的键为 name姓名、id工号、age年龄。 # # **示例数据结构**预置数据 # # python # # # # # # 2. **添加员工功能1** # # - 使用 while 循环允许用户连续添加。 # # - 提示用户输入员工的姓名、工号和年龄。 # # - 将信息组装成字典并添加到员工列表中。 # # - 询问用户是否继续添加y/n。 # # # # 3. **查看所有员工功能2** # # - 使用 for 循环遍历员工列表并格式化打印出每个员工的信息。 # # # # 4. **按工号查找员工功能3** # # - 提示用户输入要查找的工号。 # # - 使用 for 循环遍历列表并使用 if 语句判断工号是否匹配。 # # - 如果找到打印该员工的完整信息如果未找到提示“未找到该员工”。 # # # # 5. **统计年龄分布功能4** # # - 定义一个字典来统计不同年龄段的人数。年龄段分为青年30、中年30-50、资深50。 # # - 使用 for 循环遍历所有员工通过 if...elif...else 判断每个员工所属的年龄段并在统计字典中对应计数。 # # - 最后遍历统计字典打印出分布情况。 # # # # 6. **退出系统功能5** # # - 使用 break 退出主循环结束程序。 employees [ {name: 张三, id: 1001, age: 28}, {name: 李四, id: 1002, age: 21}, {name: 王五, id: 1003, age: 55} ] str1 --- 员工管理系统 --- 1. 添加员工 2. 查看所有员工 3. 按工号查找员工 4. 统计年龄分布 5. 退出系统 while True: print(str1) choose input(请输入选择的功能:) if choose1: print(添加员工功能开始~~~) # 2. **添加员工功能1** # - 使用 while 循环允许用户连续添加。 # - 提示用户输入员工的姓名、工号和年龄。 # - 将信息组装成字典并添加到员工列表中。 # - 询问用户是否继续添加y/n。 while True: uname input(请输入姓名:) id input(请输入id) # 如果id值本身是存在的则直接报错退出添加 is_cunzaiFalse for i in employees: if i[id]id: is_cunzaiTrue break if is_cunzai: print(id值的用户存在) else: ageint(input(请输入年龄)) new_user { name:uname, id:id, age:age } employees.append(new_user) print(employees) a input(是否继续添加员工N\Y) if aN: break elif choose2: # 查看所有员工 for i in employees: print(f员工的姓名是:{i[name]},员工的id是:{i[id]},员工的年龄是:{i[age]}) elif choose3: select_id input(请输入查找的工号:) is_cunzai False for i in employees: if i[id]select_id: is_cunzaiTrue print(f员工的姓名是:{i[name]},员工的id是:{i[id]},员工的年龄是:{i[age]}) break if not is_cunzai: print(很遗憾用户不存在) elif choose4: # **统计年龄分布功能4** # # - 定义一个字典来统计不同年龄段的人数。年龄段分为青年30、中年30-50、资深50。 # # - 使用 for 循环遍历所有员工通过 if...elif...else 判断每个员工所属的年龄段并在统计字典中对应计数。 # # - 最后遍历统计字典打印出分布情况。 dict1 { 青年:0, 中年:0, 资深:0 } for i in employees: if i[age]30: dict1[青年]1 elif 30i[age]50: dict1[中年]1 else: dict1[资深]1 print(dict1) elif choose5: print(程序退出) break # company { # name: 科技公司, # departments: [ # { # name: 技术部, # employees: [ # {name: 张三, position: 工程师, salary: 15000}, # {name: 李四, position: 架构师, salary: 25000} # ] # }, # { # name: 市场部, # employees: [ # {name: 王五, position: 经理, salary: 18000}, # {name: 赵六, position: 专员, salary: 9000} # ] # } # ] # } # # 市场部门的人员名字返回给我 # # company[departments] # for i in company[departments]: # # print(i) # # 确定是市场部的信息 # if i[name] 市场部: # # print(i[employees]) # for j in i[employees]: # print(j[name])二、集合特点1.集合是无序的不存在索引下标、可变的数据类型集合内部的元素必须是不可变的数据类型2.集合中的元素不能重复三、集合创建1.{元素1,元素2……} set1 {1,1,1,2,12,33,33,33} 如果集合中存在重复的元素那么集合会自动进行去重的操作 空的集合 2. set函数是强制转换为集合的 set2 set()四、集合的方法set1 {1,2,3,4,zhangsan}添加元素添加是无序的不确定添加的位置 set1.add(zhangsan) print(set1) set1.update([zhagsan,lisi]) print(set1)删除print(set1) 只能根据具体的元素内容进行删除,如果删除的元素不存在那么报错KeyError: asassaasass set1.remove(ckdcdkcmdcdmkc) print(set1) set1.discard(cndkcnkdcndkc) #discard删除的元素不存在不会报错 print(set1) set1.pop() #随机删会返回删除的元素 set1.clear()五、集合的运算1、交集同时在a和b中的元素set1 {1,2,3,zhangsan,lisi} set2 {1,3,lisi,wangmai} print(set1 set2) print(set1.intersection(set2))2.并集存在于a或者存在于bprint(set1 | set2) print(set1.union(set2))3.差集在a中但是不在b中的print(set1-set2) print(set1.difference(set2))4.对称差集在a中或者在b中但是不同时在a和bprint(set1 ^ set2) print(set1.symmetric_difference(set2))六、推导式推导式指的是快速生成列表、字典1.无条件的列表推导式1-1000之间所有的偶数的平方组成一个列表 list1 [i*i for i in range(1,11)] print(list1)2.带条件的列表推导式[表达式 for 临时变量 in 序列 if 条件] list2 [str(i)zhagsan for i in range(1,11) if i % 2 0] [4,16] print(list2) # [[1,2],[3,4]] # list3 [[i,j] for i in range(1,3) for j in range(5,8)] # print(list3) # [[1, 5], [1, 6], [1, 7], [2, 5], [2, 6], [2, 7]]3.字典推导式dict1 {i:i*i for i in range(7)} print(dict1) dict2 { i:j for i in [name,age] for j in range(1)} print(dict2)4.集合推导式set1{i for i in range(10)} print(set1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2498993.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…