首页 文章 精选 留言 我的

精选列表

搜索[飞行模拟],共10000篇文章
优秀的个人博客,低调大师

Python计算器(模拟eval)

目的:实现同Python中eval函数一样,对于复杂算术运算提供一个简易的计算器;思路:1、通过正则表达式,将运算式子中所有的数字和运算符分割开来形成类表的方式,然后可以方便列表检索进行运算,eq_format(eq)函数;2、通过列表的检索,通过递归的运算,一层层的剥离掉(),然后进行+,-,*,/,最终得到完全没有括号的算式,进行最后一步的运算,期间需要处理+-,--的情况出现,主要涉及到change(eq,count)函数;(对于()剥离的情况,主要是通过遍历列表,如果遇到左括号,则把当前左括号的索引赋值给参数bracket,直到遇到第一个右括号,此时的索引与bracket中间的元素即为最内层括号的元素,用切片的方式提取出来,通过 calculate() 函数计算出值,然后用计算结果去替换掉此时左括号到第一个右括号的元素,此时去除第一层括号,然后进入递归,不断递归直至去除所有括号;可能遇到的问题: 不要用index的方式去取当前左括号的索引,因为列表的index方法返回的一直都是第一个左括号的索引,而不是当前左括号的索引,会导致出错。因此在函数内用参数 自定义的参数count 进行计数当前索引值。用计算得出的值来替换掉第一层括号部分后,有可能会出现 ‘+-’ ,‘- -’的情况,然后用change() 函数进行处理) 3、去括号的方式,主要是从最内层开始突破,通过运算得到结果替换掉(),然后一层层向外运算剥离,最后得到结果,主要是simplify(format_list)函数中嵌套change()函数和calculate()函数进行运算取括号以及特殊处理;4、对于乘除的运算详见deal_multiplication_division()函数部分,方法也是递归,处理掉一层乘除以后得到的结果进行判断处理掉+-,--的情况,然后进入下一步运算,其中嵌套change(eq,count)函数来进行特殊处理;5、对于加减的运算详见deal_plus_minus()函数部分,方法同样是递归;6、整体运算的过程主要是calculate(s_eq)函数,通过判断是加减还是乘除的方式嵌套deal_multiplication_division()函数和deal_plus_minus()函数,然后嵌套在simplify()函数当中进行运算;7、最后使用calculator(eq)主函数,嵌套simplify()和calculate()函数进行最后的计算得到结果; 详细代码如下: import re def eq_format(eq): #格式化计算式函数 ''' :param eq:输入的算术字符串 :return: 格式化后的列表,例如['-','2','+','3','*','12','/','123'] ''' format_list = re.findall('[\d\.]+|\(|\+|\-|\*|\/|\)',eq) #print(format_list) '[\d\.]+|\(|\+|\-|\*|\/|\)' return format_list #返回格式化的列表形式内容 def change(eq,count): #解决同时出现+-,--类的格式化列表 ''' :param eq:去掉括号以后或者乘除后的格式化列表 :param count: 发生变化的元素的索引位置 :return: 返回一个没有+-,--等类的格式化列表内容 ''' if eq[count] == '-': #如果第count元素是-的话 if eq[count-1] == '-': #且第count-1元素也是- eq[count-1] = '+' #那么调整count-1元素为+ del eq[count] #删除第count元素内容 elif eq[count-1] == '+': eq[count-1] = '-' del eq[count] return eq def deal_multiplication_division(eq): #处理所有的乘除的计算方程式 ''' :param eq:处理带有乘除符号的格式化列表 :return: 去掉乘除好以后的格式化列表 ''' count = 0 for i in eq: if i == '*': if eq[count+1] != '-': eq[count-1] = float(eq[count-1]) * float(eq[count+1]) del(eq[count]) del(eq[count]) elif eq[count+1] == '-': eq[count] = float(eq[count-1]) * float(eq[count+2]) eq[count - 1] = '-' del(eq[count+1]) del(eq[count+1]) eq = change(eq,count-1) return deal_multiplication_division(eq) elif i == '/': if eq[count+1] != '-': eq[count-1] = float(eq[count-1]) / float(eq[count+1]) del(eq[count]) del(eq[count]) elif eq[count+1] == '-': eq[count] = float(eq[count-1]) / float(eq[count+2]) eq[count-1] = '-' del(eq[count+1]) del(eq[count+1]) eq = change(eq,count-1) return deal_multiplication_division(eq) count = count + 1 return eq def deal_plus_minus(eq): #处理所有的加减方程式的计算 ''' :param eq:只带有加减号的格式化列表 :return: 计算出整个列表的结果 ''' count = 0 if eq[0] != '-': sum = float(eq[0]) else: sum = 0.0 for i in eq: if i == '-': sum = sum - float(eq[count+1]) elif i == '+': sum = sum + float(eq[count+1]) count = count + 1 if sum >= 0: eq = [str(sum)] else: eq = ['-',str(-sum)] return eq def calculate(s_eq): #处理进行加减乘除 ''' :param s_eq:不带括号的格式化列表 :return: 返回最终的计算结果 ''' if '*' or '/' in s_eq: s_eq = deal_multiplication_division(s_eq) if '+' or '-' in s_eq: s_eq = deal_plus_minus(s_eq) return s_eq def simplify(format_list): #递归方式去掉括号,并计算到最后一层没有括号 ''' :param format_list:输入的算是格式化列表如['-','2','+','3','*','12','/','123'] :return:通过递归去掉括号,返回最终简化后没有括号的列表 ''' bracket = 0 #用于存放左括号在格式化列表中的索引 count = 0 for i in format_list: if i == '(': bracket = count elif i == ')': temp = format_list[bracket + 1 : count] new_temp = calculate(temp) format_list = format_list[:bracket] + new_temp + format_list[count+1:] format_list = change(format_list,bracket) #解决去括号后出现的'--','+-'问题 return simplify(format_list) #递归去掉括号 count = count + 1 return format_list #当递归到最后一层层的时候,不在有括号,因此返回最后无括号的列表内容 def calculator(eq): #计算主函数,主要判断最终计算结果的正负值,并返回 format_list = eq_format(eq) # 把字符串变成格式化的列表形式 s_eq = simplify(format_list) #去掉括号,得到一个无括号的格式化列表 ans = calculate(s_eq) #计算最终结果 if len(ans) == 2: #判断最终结果的正负值并返回结果 ans = -float(ans[1]) else: ans = float(ans[0]) return ans #返回最终的结果 if __name__ == '__main__': equation = '1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))' ans = calculator(equation) print('eval运算结果:',eval(equation)) print('程序运算结果:',ans) 参考链接:link

优秀的个人博客,低调大师

ScummVM 2026.3.0 发布,游戏模拟

ScummVM 2026.3.0 现已发布,具体更新内容如下: 新增支持的游戏: Nancy Drew: The Haunted Carousel Nancy Drew: Danger on Deception Island Noctropolis Cartoon Carnival Alfred Pelrock: En Busca de un Sueño Pilot Brothers: On the Track of Striped Elephant Pilot Brothers: The Case of Serial Maniacand 5 more games on the same engine General enhancements 包括 GUI 改进,大大小小的提升用户体验的功能,例如改进的搜索、动态滚动和改进的“About”对话框。 Engine bugfixes and improvements 十款支持的引擎都得到了调整和改进。《Martian Memorandum》修复了脚本错误,《Simon 2》的多语言支持得到了改进,GLK 引擎新增了一个完整的控制面板,允许调整文本渲染效果;《Last Express》修复了一些边界情况下的错误,而《Rex Nebular》也同样修复了此类问题。《Might and Magic 1》对其键位映射器进行了重大重构,增强的补丁支持也比以往运行得更顺畅。 Nancy 引擎的开发工作一直在积极进行,除了新增的两款游戏(number 8 and 9)之外,该系列中大部分已支持的游戏都得到了错误修复。 两款新游戏已移植到 SLUDGE 引擎,并已上线官网供玩家下载。用于《Little Big Adventure》系列的 TwinE 引擎也修复了一系列漏洞。 Atari port一直在不断进行各种大小的优化,而 PlayStation 3 port对内存的占用较少,可以运行更大型的游戏。 更多详情可查看发行说明。

优秀的个人博客,低调大师

ScummVM 2.9.1 发布,游戏模拟

ScummVM 2.9.1 现已发布,此次维护版本主要致力于修复自上次稳定版本发布以来发现的错误。 与往常一样,多个引擎和平台都获得了相当多的错误修复和改进:AGI、AGS、Asylum、BAGEL、Bladerunner、Hopkins、MADS、NGI、SCI、SCUMM、Sky、Sword1、Tetraedge、Tinsel、Tucker、TwinE 和 TWP。 如果将 Nintendo 3DS 配置为仅使用顶部屏幕,则可以正确显示 GUI。 此外,Android 现已提供保存和恢复配置文件及游戏存档的选项,并且得益于默认启用的 ARM NEON 优化,绝大多数老款 Android 设备的性能将得到提升。《Beneath a Steel Sky》游戏在开场时也不会再崩溃了。 Atari 移植版修复了一些内部后端、图形用户界面和音频问题。且 iOS/iPad 现在可以正确识别 FluidSynth 音色库,macOS 支持在 Snow Leopard 及更早版本上播放原版音频 CD,Windows 9x 则可以再次使用 FLAC 文件。 详细的改进列表可在此处查看。 下载页面

优秀的个人博客,低调大师

ScummVM 2.8.0 发布,游戏模拟

ScummVM 2.8.0– “Mysteries, Mammoths, and Muppets”版本已于日前正式发布,项目团队一直忙于开发新引擎和增强现有引擎。新版本中支持的游戏列表明显增加,共推出了 50 款新游戏和 5 个新引擎。包括: Adibou 1 Classical Cats The Dark Eye Dark Side Escape From Hell Gadget: Invention Travel and Adventure Gobliiins 5 The Excavation of Hob's Barrow Kingdom: The Far Reaches Might and Magic Book One Muppet Treasure Island Nancy Drew: The Final Scene Nancy Drew: Message in a Haunted Mansion Nancy Drew: Secrets Can Kill Nancy Drew: Stay Tuned for Danger Nancy Drew: Treasure in the Royal Tower Primordia Reah: Face the Unknown Schizm: Mysterious Journey Shardlight Strangeland SyberiaandSyberia II(macOS versions only) Technobabylon The Vampire Diaries Whispers of a Machine Wrath of the Godsand four other Director titles. 14 AGS titles byStrangaandCloak and Dagger 与此同时,RetroArch port正在进行适当的重写,现已成为了源代码的一部分;Atari port也从头开始重写,现在可以直接与硬件对话,跳过了作为中间层的 SDL。这使得更多游戏可以在该平台上运行。不过 Atari FireBee port 仍在使用 SDL 库。 此外,通过使用 CPU 特定的 SIMD 指令(例如 SSE、AVX2 和 NEON)在 AGS 引擎和一些通用例程中绘制图形,将许多情况下的绘图速度提高了 4-14 倍。还合并了 Backyard Sports Online 项目,对Moonbase Commander 的支持也在积极测试阶段。

优秀的个人博客,低调大师

AgentVerse —— 多 LLM 环境模拟框架

AgentVerse 提供了一个多功能框架,可简化为大型语言模型(LLM)创建定制多代理环境的过程。框架旨在以最小的投入促进快速开发和定制,从而使研究人员能够专注于他们的研究,而不是被实施细节所困扰。 特点 高效的环境构建:我们的框架提供了一系列基本构建块,可以轻松创建多代理环境。只需要配置文件中的几行,就可以轻松构建LLM聊天室等基本环境。此过程需要为 LLM 士定义环境设置和提示,使研究人员能够专注于实验和分析。 可定制组件:AgentVerse 通过将多代理环境划分为五个功能模块并定义各自的接口来简化多代理环境。对于使用AgentVerse提供的基础模块无法直接构建的复杂环境,你可以自定义这五个功能模块中的一个或多个接口,根据你的需求高效地创建你自己的多Agent环境。 工具(插件)利用:AgentVerse 通过工具支持多代理环境。目前,AgentVerse 支持BMTools中提供的工具。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册