Python倒计时器报错求助:PyCharm不识别print(end="")参数
解决PyCharm中Python倒计时器
end=""参数无法识别的问题 嘿,这个问题很常见——你的PyCharm项目大概率用的是Python 2解释器,而end=""是Python 3里print()函数才支持的参数,Python 2中的print是个语句,根本不认这个参数,所以编辑器才会报错。
给你两个解决办法:
方法一:切换到Python 3解释器(推荐)
这是最彻底的解决方式,毕竟Python 2早就停止维护了:
- 打开PyCharm的
File > Settings > Project: [你的项目名称] > Python Interpreter - 点击右上角的齿轮图标,选择
Add - 在弹出的窗口里找到你本地安装的Python 3版本,添加后设为当前项目的解释器
- 重启PyCharm后,代码里的
end=""就不会再报错了
方法二:修改代码适配Python 2(不推荐)
如果因为特殊原因必须用Python 2,可以把print语句换成sys.stdout.write来实现相同的换行控制效果:
- 先在代码顶部导入
sys模块:
import sys
- 把原来的
print(time_left + "\r", end="")替换成:
sys.stdout.write(time_left + "\r") sys.stdout.flush()
这样就能在Python 2里实现实时刷新倒计时的效果了。
另外给你提个小建议:原代码里的KeyboardInterrupt捕获位置有点问题——它现在在try块里,只有在转换输入为整数的时候按Ctrl+C才会触发,如果你想在倒计时过程中按Ctrl+C也能退出,可以把外层的while True也包进try-except里。
修改后的完整Python 3代码(优化了中断捕获):
import time try: while True: uin = input(">>") try: when_to_stop = abs(int(uin)) except: print("not a number mate") continue while when_to_stop > 0: m, s = divmod(when_to_stop, 60) h, m = divmod(m, 60) time_left = str(h).zfill(2) + ":" + str(m).zfill(2) + ":" + str(s).zfill(2) print(time_left + "\r", end="") time.sleep(1) when_to_stop -= 1 print() except KeyboardInterrupt: print("\n程序已退出")
内容的提问来源于stack exchange,提问作者Starbucks
相关产品推荐
相关产品推荐

