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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:32:01