本文介绍在python命令行辐射剂量计算程序中,如何用简单键入指令(如"reset"或"quit")实时中断计算循环,无缝跳转回dtu型号与参数输入环节,无需依赖复杂gui或多线程。
在您的辐射剂量计算脚本中,while True: 循环持续等待 I1 和 I2 输入并执行公式迭代更新参数 a、b,但缺乏用户主动退出或重置的入口——这正是键盘事件介入的核心场景。值得注意的是:此处“键盘事件”并非指监听任意按键(如 keyboard.is_pressed()),而是利用 input() 的阻塞特性,通过约定特殊字符串指令实现轻量级控制流切换。该方案兼容性强、零依赖、无竞态风险,远比引入 keyboard 库监听全局按键更安全可靠(尤其在 Windows 终端或远程 SSH 环境下,keyboard 常因权限/兼容性问题静默失效)。
以下是推荐的结构化改造方案,分两层中断逻辑:
在首次选择 DTU 编号后、进入 KdrDf 参数输入前,捕获 "quit" 指令:
# 替换原代码中这一段:
dtu = int(input("Номер ДТУ = "))
# 改为:
while True:
dtu_input = input("Номер ДТУ = ").strip()
if dtu_input.lower() == "quit":
print("Выход из программы.")
exit(0)
try:
dtu = int(dtu_input)
if dtu in (1, 2, 3):
break
else:
print("Ошибка: введите 1, 2 или 3.")
except ValueError:
print("Ошибка: введите число.")将原单层 while True: 计算循环升级为外层参数循环 + 内层测量循环,并在关键 input() 处插入指令判断:
# KdrDf(start) —— 外层:固定 DTU 后的参数配置循环
while True:
n_input = input("K_group = ").strip()
if n_input.lower() == "reset":
break # 跳出内层,回到 DTU 选择
if n_input.lower() == "quit":
print("Выход из программы.")
exit(0)
try:
n = int(n_input)
if 0 <= n < len(k): # 防越界
ks = k[n]
else:
print(f"Ошибка: K_group должен быть от 0 до {len(k)-1}.")
continue
except ValueError:
print("Ошибка: K_group должно быть числом.")
continue
k_dr = float(input('K_dreif = '))
dfon = float(input("Dfon = "))
# 测量值输入循环(内层)
while True:
i1_str = input("I1 = ").strip()
if i1_str.lower() == "reset":
break # 跳出内层,回到 K_group 输入
if i1_str.lower() == "quit":
exit(0)
i2_str = input("I2 = ").strip()
if i2_str.lower() == "reset":
break
if i2_str.lower() == "quit":
exit(0)
# 正常数值处理(保留您原有的逗号转小数逻辑)
i1_str = i1_str.replace(',', '.')
i2_str = i2_str.replace(',', '.')
try:
i_1, i_2 = float(i1_str), float(i2_str)
except ValueError:
print("Ошибка: введите корректные числа.")
continue
# 后续计算逻辑(保持不变)...
i1, i2 = i_1 * ks, i_2 * ks
d1 = (k_dr * i1 * a) + b
d2 = (k_dr * i2 * a) + b
D = ((d1 + d2) / 2) - dfon
if 1.5 <= D < 15:
a, b = a_m[1], b_m[1]
# ... 重算 D 并输出黄色
elif D >= 15:
a, b = a_m[2], b_m[2]
# ... 重算 D 并输出红色
else:
# ... 输出绿色通过以上改造,用户只需在任意输入环节键入 reset,即可立即跳出当前计算上下文,逐级返回至 DTU 选择界面;键入 quit 则彻底退出程序。整个过程逻辑清晰、无状态泄漏、完全符合命令行交互直觉,是科学计算类脚本中推荐的标准实践。
# python
# js
# json
# windows
# win
# 配置文件
# 键盘事件
# elif
相关文章:
婚礼视频制作网站,学习*后期制作的网站有哪些?
h5在线制作网站电脑版下载,h5网页制作软件?
如何在宝塔面板中创建新站点?
如何自定义建站之星网站的导航菜单样式?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
西安大型网站制作公司,西安招聘网站最好的是哪个?
焦点电影公司作品,电影焦点结局是什么?
成都网站制作报价公司,成都工业用气开户费用?
深入理解Android中的xmlns:tools属性
如何获取PHP WAP自助建站系统源码?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
公司网站的制作公司,企业网站制作基本流程有哪些?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何在服务器上配置二级域名建站?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
建站之星如何通过成品分离优化网站效率?
Python文件管理规范_工程实践说明【指导】
微信小程序 五星评分(包括半颗星评分)实例代码
免费网站制作appp,免费制作app哪个平台好?
宝塔新建站点为何无法访问?如何排查?
网站按钮制作软件,如何实现网页中按钮的自动点击?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何通过虚拟主机快速搭建个人网站?
如何实现建站之星域名转发设置?
IOS倒计时设置UIButton标题title的抖动问题
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
网页设计与网站制作内容,怎样注册网站?
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
建站之星×万网:智能建站系统+自助建站平台一键生成
电脑免费海报制作网站推荐,招聘海报哪个网站多?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
,网页ppt怎么弄成自己的ppt?
如何配置IIS站点权限与局域网访问?
如何高效配置香港服务器实现快速建站?
Python lxml的etree和ElementTree有什么区别
外贸公司网站制作,外贸网站建设一般有哪些步骤?
如何在Ubuntu系统下快速搭建WordPress个人网站?
如何在阿里云部署织梦网站?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
兔展官网 在线制作,怎样制作微信请帖?
电商网站制作价格怎么算,网上拍卖流程以及规则?
如何快速生成ASP一键建站模板并优化安全性?
如何选择CMS系统实现快速建站与SEO优化?
如何彻底删除建站之星生成的Banner?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
建站主机选购指南与交易推荐:核心配置解析
微信小程序制作网站有哪些,微信小程序需要做网站吗?
如何在云主机上快速搭建网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。