如何修改Python程序,使main()执行后不自动重启并询问是否重跑?
调整后的代码实现
核心修改点
- 移除原
main()函数内的while True自动循环逻辑,单次调用仅执行一次菜单展示、结果输出流程 - 所有原英文交互文本全部替换为中文
- 新增外层控制逻辑:单次统计流程结束后主动询问是否继续,仅用户确认时重新触发
main() - 补充非数字输入的异常捕获,避免程序遇到无效输入直接崩溃
# 初始化目标文本文件 with open("nomobile.txt", "w", encoding="utf-8") as f: text = " If The worLd was Ending , yOU WIll come over right, u will come over and stay the 9it" f.write(text) # 读取文本完成全量统计 with open("nomobile.txt", "r", encoding="utf-8") as f: characters = f.read() vowels = 0 consonants = 0 uppercase = 0 lowercase = 0 for ch in characters: if ch.islower(): lowercase += 1 elif ch.isupper(): uppercase += 1 ch = ch.lower() if ch in "aeiou": vowels += 1 elif ch in "bcdfghjklmnpqrstvwxyz": consonants += 1 def main(): print("\n=== 文本统计查询菜单 ===") print("请选择你要查询的统计项:") print("按1查询大写字母数量") print("按2查询小写字母数量") print("按3查询元音字母数量") print("按4查询辅音字母数量") print("按5一次性查询所有统计项") # 捕获非数字输入的异常 try: choice = int(input("请输入对应数字:")) except ValueError: print("输入无效,请输入1-5范围内的整数") return if choice == 1: print(f"文本中的大写字母共有{uppercase}个") elif choice == 2: print(f"文本中的小写字母共有{lowercase}个") elif choice == 3: print(f"文本中的元音字母共有{vowels}个") elif choice == 4: print(f"文本中的辅音字母共有{consonants}个") elif choice == 5: print("=== 全部统计结果 ===") print(f"大写字母数量:{uppercase}") print(f"小写字母数量:{lowercase}") print(f"元音字母数量:{vowels}") print(f"辅音字母数量:{consonants}") else: print("输入无效,请输入1-5范围内的数字") # 外层运行控制 while True: main() continue_flag = input("\n是否需要再次运行程序?输入y确认继续,输入其他任意值退出:").strip().lower() if continue_flag != "y": print("程序已退出") break
运行逻辑说明
- 程序启动后首先完成文本写入、读取及全量字符统计计算
- 每轮查询仅展示一次菜单、输出一次对应结果,不会自动跳转回菜单
- 结果输出完成后强制弹出继续/退出选择,符合预期交互逻辑
- 原有统计规则完全保留:空格、标点、数字不纳入元音、辅音、大小写字母的统计范畴
内容的提问来源于stack exchange,提问作者DeafNut11
相关产品推荐
相关产品推荐

