Python:如何为多用户输入实现错误处理?
给多用户输入添加错误处理的完整方案
嘿,作为Python新手就想着给用户输入加错误处理,这意识真的超赞!我来帮你把get_filters()函数的错误处理机制补全,确保用户输入不符合要求时,程序会友好提示并让用户重新输入,而不是直接崩掉。
首先先提下你现有代码里的小细节:
'Washington'.title()其实没必要这么写,直接用'Washington'就行,它本身已经是首字母大写的格式了- 月份列表里的
'a...'我猜应该是想支持'all'选项(也就是选择所有月份),我下面的代码会基于这个假设来完善
完善后的带错误处理的代码
# 加载并筛选数据集 import pandas as pd CITY_DATA = {'Chicago': 'chicago.csv', 'New York City': 'new_york_city.csv', 'Washington': 'washington.csv'} # 筛选数据集 def get_filters(): """ 获取用户输入的城市、月份筛选条件,带错误处理机制 返回: (str) city - 选择的城市 (str) month - 选择的月份(或'all'表示所有月份) """ print("欢迎探索美国城市共享单车数据!") # 处理城市输入的错误循环 city_options = ['Chicago', 'New York City', 'Washington'] while True: city = input("请输入要查询的城市(可选:Chicago, New York City, Washington):").strip().title() if city in city_options: break else: print(f"抱歉,'{city}' 不是有效的选项哦,请从给定的城市列表里选择!") # 处理月份输入的错误循环 month_options = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', 'All'] while True: month = input("请输入要查询的月份(输入'all'表示所有月份,可选:January到December):").strip().title() if month in month_options: # 把用户输入的'All'转成小写的'all',方便后续数据集处理 month = month.lower() break else: print(f"抱歉,'{month}' 不是有效的选项哦,请输入正确的月份或'all'!") print('-'*40) return city, month # 可以调用函数测试下 # city, month = get_filters() # print(f"你选择的城市:{city},月份:{month}")
错误处理的核心逻辑说明
- 循环验证输入:用
while True创建无限循环,直到用户输入符合要求时才通过break跳出循环,这样用户输错多少次都能重新输入,不会直接报错退出 - 大小写兼容:用
strip().title()处理用户输入,既去掉了输入前后的空格,又把输入转成首字母大写的格式,这样用户输入chicago、CHICAGO、chicago都能被正确识别成Chicago - 友好提示:当用户输入无效时,明确告诉用户哪里错了,以及正确的选项范围,提升用户体验
这样修改后,你的程序就能从容处理用户的各种输入错误啦!
内容的提问来源于stack exchange,提问作者LOR121
相关产品推荐
相关产品推荐

