You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中RFID读卡计时问题:While True循环无法终止

问题分析

原代码的核心问题是:当检测到卡片进入内部计时循环后,没有再次检查卡片是否仍然存在,导致即使移除卡片,内部循环也会一直执行计时,无法切换到无卡提示逻辑。

修复后的代码
import time as tm
import serial
import readCard


def getActivity():
    while True:
        card = readCard.readCard()

        if card != '':
            seconds = 0
            minutes = 0
            hours = 0

            while True:
                # 格式化打印当前计时
                print(f"{str(hours).zfill(2)}:{str(minutes).zfill(2)}:{str(seconds).zfill(2)}")
                
                # 等待1秒后更新计时,并重新检测卡片状态
                tm.sleep(1)
                seconds += 1
                
                # 处理时分秒进位
                if seconds == 60:
                    seconds = 0
                    minutes += 1
                if minutes == 60:
                    minutes = 0
                    hours += 1
                
                # 关键:每次计时后重新检测卡片,无卡则退出计时循环
                current_card = readCard.readCard()
                if current_card == '':
                    break
        else:
            print('No Card Detected...')

getActivity()
关键修改说明
  • 在内部计时循环中,每次等待1秒后,重新调用readCard.readCard()检测卡片状态
  • 一旦检测到卡片不存在,立即break退出计时循环,回到外层循环触发无卡提示
  • 移除了无用的cards = card变量,用f-string优化了计时打印的格式,让代码更简洁

内容的提问来源于stack exchange,提问作者Elijah Chileshe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 09:21:00