Python计数程序运行异常求助:输入Y/N后无反应直接退出
Python计数程序无反应问题修复
你的程序输入Y/N后无反应直接退出,核心问题有两个:
问题1:错误使用bool(input())
不管输入"Y"还是"N",bool(input(...))都会返回True(所有非空字符串转布尔值都是True),导致后续slcnt == "Y"和slcnt == "N"的判断全部不成立,程序跳过所有分支直接结束。
问题2:未导入time模块
cnt函数里用到了time.sleep(1),但代码开头没有导入time模块,若进入慢计数分支会直接报错。
另外还有一处细节问题:快速计数的range(num)只会输出0到num-1,和慢计数的0到num输出范围不一致,需要统一。
修复后的代码:
import time def cnt(start, end): for x in range(start, end+1): print(x) time.sleep(1) print("Done!") def count(): num = int(input("Enter a number to count to: ")) # Slow count meaning counting 1 by 1 in console. slcnt = input("Would you like to slow count? Y/N: ").strip().upper() if slcnt == "Y": cnt(0, num) elif slcnt == "N": for i in range(num+1): print(i) print("Done") count()
修改说明:
- 新增
import time语句,解决sleep功能的依赖问题 - 去掉多余的
bool()转换,直接获取输入字符串,通过strip().upper()处理输入,兼容大小写和首尾空格 - 快速计数的
range(num)改为range(num+1),保证和慢计数的输出范围一致
内容的提问来源于stack exchange,提问作者Ralph Turner
相关产品推荐
相关产品推荐

