本文介绍在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
相关文章:
广德云建站网站建设方案与建站流程优化指南
动图在线制作网站有哪些,滑动动图图集怎么做?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
,网页ppt怎么弄成自己的ppt?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
青浦网站制作公司有哪些,苹果官网发货地是哪里?
如何访问已购建站主机并解决登录问题?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
制作证书网站有哪些,全国城建培训中心证书查询官网?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
如何规划企业建站流程的关键步骤?
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
如何快速选择适合个人网站的云服务器配置?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
如何通过远程VPS快速搭建个人网站?
建站之星安全性能如何?防护体系能否抵御黑客入侵?
建站之星上传入口如何快速找到?
如何在云主机上快速搭建网站?
如何用美橙互联一键搭建多站合一网站?
如何通过西部数码建站助手快速创建专业网站?
如何使用Golang table-driven基准测试_多组数据测量函数效率
如何快速搭建高效WAP手机网站?
如何基于云服务器快速搭建个人网站?
北京专业网站制作设计师招聘,北京白云观官方网站?
如何在万网主机上快速搭建网站?
c# 服务器GC和工作站GC的区别和设置
如何在阿里云ECS服务器部署织梦CMS网站?
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
中山网站制作网页,中山新生登记系统登记流程?
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何正确选择百度移动适配建站域名?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
建站VPS选购需注意哪些关键参数?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
网站制作模板下载什么软件,ppt模板免费下载网站?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
建站之星各版本价格是多少?
如何快速查询网址的建站时间与历史轨迹?
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
Swift中swift中的switch 语句
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
如何快速生成可下载的建站源码工具?
Python多线程使用规范_线程安全解析【教程】
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
*请认真填写需求信息,我们会在24小时内与您取得联系。