当前位置: 首页 > news >正文

UVA537 Artificial Intelligence? 题解

UVA537 Artificial Intelligence?

题目描述

Link: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=7&page=show_problem&problem=478

PDF

输入格式

输出格式

输入输出样例 #1

输入 #1

3 If the voltage is U=200V and the current is I=4.5A, which power is generated? A light-bulb yields P=100W and the voltage is U=220V. Compute the current, please. bla bla bla lightning strike I=2A bla bla bla P=2.5MW bla bla voltage?

输出 #1

Problem #1 P=900.00W Problem #2 I=0.45A Problem #3 U=1250000.00V

Solution

大致题意

  1. 本题单测试点包含多组数据,一组数据为一行;

  2. 每组数据会以字符串的格式输入一个电学问题,可以是“已知电流和电压求功率”,“已知电压和功率求电流”,“已知电流和功率求电压”;

  3. 已知量一定会按照形如I=14mAU=0.45kVP=140MW之类的格式给出,数字和等号、等号和前面的字母之间没有空格,单位可能会用字母 m,k,M 来表示× 0.001 \times0.001×0.001× 1000 \times1000×1000× 10 6 \times10^6×106

分析

本题属于典型的自然语言处理问题,对于以自然语言形式给出的英语语句,使用 Python 中操作字符串的函数(如replace等)可以很方便的进行分析处理。

1. 提取有用信息

不难看出,对于每一条问题,有用的信息就是问题中包含等号的部分。使用 Python 的split可以将输入的一行内容按照空格的位置进行拆分成若干个字符串,找出包含等号的字符串存入一个列表即可。拆分前我们可以先考虑把逗号/问号全部移除,但是不能在这个时候移除句点因为句点符号会用作小数点
参考代码:

val=[]#将逗号换成一个空格, 然后拆分成若干部分word=input().replace(","," ").replace("?","").split()forjinrange(len(word)):#某部分包含等号就存入列表, 进行后续分析if("="inword[j]):val.append(word[j])

上述代码的功能是筛选出一个问题中包含等号的部分。以上面的代码为例,输入了下面的一句话:

If I know electric current I=2.4A and voltage U=14kV, the power is ?

列表val的值为["I=2.4A","U=14kV"],正确答案为P=33600.00W

2. 判断变量类型

在有用信息中,变量可能是电流,电压或者功率,判断的方式也很简单。只要判断字符PI或者U是否出现在有用信息中即可。参考代码:

if("P"inval[0]and"I"inval[1]):...elif("I"inval[0]and"P"inval[1]):...elif("U"inval[0]and"I"inval[1]):......

确定了已知的两个变量的类型后,就可以着手进行计算了。

3. 计算

使用replace将两条有用信息转化为数值的方法如下:

  1. "m""k""M"替换为"*0.001""*1000""*1e6"便于进行数学计算;
  2. 使用replace("P=","")replace("U=","")replace("I=","")将等号和等号前的字母移除;
  3. 使用和第 2 条类似的方法去掉表示单位的字母AVW

部分代码:

if("U"inval[1]and"I"inval[0]):#将有用信息转化为纯数值val[1]=val[1].replace("U=","").replace("k","*1000").replace("m","*0.001").replace("M","*1e6").replace("V?","").replace("V.","").replace("V","")val[0]=val[0].replace("I=","").replace("k","*1000").replace("m","*0.001").replace("M","*1e6").replace("A?","").replace("A.","").replace("A","")

列表val=["I=2.4A","U=14kV"]在经过上述处理后会变成["2.4","14*1000"],根据电学关系式P = U I P=UIP=UI,用eval计算并保留两位小数输出即可,参考代码:

#输出结果print("U=%.2fV"%(eval(val[0])*eval(val[1])))

4. 输出

UVA 的题目一定要严格按照题目要求输出!需要说明的是:

  1. 所有输出保留两位小数,前面要带上U=I=P=
  2. 输出答案前要先输出“Problem #多少”;
  3. 一组答案完毕后要输出一个空行,这一点请参照 PDF 题面(否则会被判定为 Presentation Error)。有些 OJ 允许 Presentation Error 获得部分分数,但在洛谷上会判定为 WA。

5. 完整代码

n=int(input())foriinrange(n):val=[]word=input().replace(","," ").split()forjinrange(len(word)):if("="inword[j]):val.append(word[j])print("Problem #%d"%(i+1))if("P"inval[0]and"I"inval[1]):val[0]=val[0].replace("P=","").replace("k","*1000").replace("m","*0.001").replace("M","*1e6").replace("W?","").replace("W.","").replace("W","")val[1]=val[1].replace("I=","").replace("k","*1000").replace("m","*0.001").replace("M","*1e6").replace("A?","").replace("A.","").replace("A","")print("U=%.2fV"%(eval(val[0])/eval(val[1])))elif("I"inval[0]and"P"inval[1]):val[0]=val[0].replace("I=","").replace("k","*1000").replace("m","*0.001").replace("M","*1e6").replace("A?","").replace("A.","").replace("A","")val[1]=val[1].replace("P=","").replace("k","*1000").replace("m","*0.001").replace("M","*1e6").replace("W?","").replace("W.","").replace("W","")print("U=%.2fV"%(eval(val[1])/eval(val[0])))elif("U"inval[0]and"I"inval[1]):val[0]=val[0].replace("U=","").replace("k","*1000").replace("m","*0.001").replace("M","*1e6").replace("V?","").replace("V.","").replace("V","")val[1]=val[1].replace("I=","").replace("k","*1000").replace("m","*0.001").replace("M","*1e6").replace("A?","").replace("A.","").replace("A","")print("P=%.2fW"%(eval(val[1])*eval(val[0])))elif("U"inval[1]and"I"inval[0]):val[1]=val[1].replace("U=","").replace("k","*1000").replace("m","*0.001").replace("M","*1e6").replace("V?","").replace("V.","").replace("V","")val[0]=val[0].replace("I=","").replace("k","*1000").replace("m","*0.001").replace("M","*1e6").replace("A?","").replace("A.","").replace("A","")print("P=%.2fW"%(eval(val[1])*eval(val[0])))elif("P"inval[0]and"U"inval[1]):val[0]=val[0].replace("P=","").replace("k","*1000").replace("m","*0.001").replace("M","*1e6").replace("W?","").replace("W.","").replace("W","")val[1]=val[1].replace("U=","").replace("k","*1000").replace("m","*0.001").replace("M","*1e6").replace("V?","").replace("V.","").replace("V","")print("I=%.2fA"%(eval(val[0])/eval(val[1])))elif("P"inval[1]and"U"inval[0]):val[1]=val[1].replace("P=","").replace("k","*1000").replace("m","*0.001").replace("M","*1e6").replace("W?","").replace("W.","").replace("W","")val[0]=val[0].replace("U=","").replace("k","*1000").replace("m","*0.001").replace("M","*1e6").replace("V?","").replace("V.","").replace("V","")print("I=%.2fA"%(eval(val[1])/eval(val[0])))print("")#看pdf版本的输入输出样例, 相邻两组数据中间有一个空行!

拓展

除了题目以外,电学中还有一个常用的物理量是电阻R RR。关于电阻的电学公式有:
U = I R U=IRU=IR
P = U 2 R = I 2 R P=\dfrac{U^2}{R}=I^2RP=RU2=I2R
如果引入了电阻这个物理量,在已知电流和电压的情况下,就必须设计额外的代码块来判断是求功率还是电阻。一种可能的方案是判断有没有出现单词 resistance(n. 阻碍,阻抗,电阻)。

http://www.jsqmd.com/news/824274/

相关文章:

  • 用PyTorch和U-Net搞定舌头图片分割:一份从数据集处理到模型部署的保姆级教程
  • At24c02
  • 100、昇腾服务器进行人脸检测和人脸比对测试onnxorange aipro 8t/20t
  • 从期望到方差:量化随机波动的核心工具
  • 无感定位技术白皮书——园区ReID跨镜易丢目标,原生时空轨迹实现全程不中断
  • 抖音视频怎么去水印?2026 实测 5 大方法对比,手机电脑都能用 - 爱上科技热点
  • 抖音视频去水印用什么工具?2026实测:免费安全的抖音去水印工具推荐 - 爱上科技热点
  • 用于分析镜头系统成像误差的工具
  • NCM音乐解锁转换终极指南:3分钟免费转换加密音乐文件
  • uni-app集成阿里OSS直传:从封装到多文件上传的实战指南
  • 紧急更新!MJ 6.1已悄然调整结构提示词解析逻辑——3类曾被广泛使用的语法组合今起失效(附兼容性迁移清单)
  • 从0到1落地小学智能判卷系统:主流BS架构全方案实战,附成绩学情分析全模块
  • 怎么迁移 Git 仓库到新版本服务器保留所有分支历史
  • 5分钟快速上手Sabaki:打造专业围棋对弈环境的终极指南
  • 抖音去水印视频解析用什么工具?2026 免费安全工具推荐,抖音视频怎么去掉水印一文搞定 - 爱上科技热点
  • OrangePi 4A深度评测:八核ARM开发板如何以NVMe与多核性能挑战树莓派
  • AP的全称是什么?
  • 企业级AI知识库系统的开发流程
  • 如何在10分钟内用AI生成专业短视频:MoneyPrinterTurbo完整指南
  • 免费抖音去水印工具推荐:在线、小程序、软件哪个好用?2026 实测全盘点 - 爱上科技热点
  • CircuitPython海龟绘图:嵌入式图形编程入门与实践
  • 告别命令行:用VSCode Remote-SSH + GDB可视化调试Linux服务器C++程序(保姆级配置)
  • 2026年5月可靠的高清图片素材/素材平台推荐高品图像 - 品牌鉴赏师
  • 深度解析:基于内核模式的硬件信息修改实战指南
  • Codex 免费额度总不够?两个工具帮你搞定多账号管理与自动切换
  • 绝对不要让两根线在同一个交换机上连成一个圈。 为什么 形成一个环就会网络风暴?
  • UE5 CommonUI实战:手把手教你打造带导航堆栈的游戏菜单系统(含输入绑定)
  • 如何用免费在线工具轻松解读无人机飞行数据
  • 抖音视频怎么在线解析去水印?2026实测无水印提取方法盘点 - 爱上科技热点
  • 关于腾讯广告算法大赛2025项目分析3-重读