python - Python输入数据类型处理

标签 python validation input error-handling

我花了一个小时或更长时间在这里寻找答案。我发现了一些有用的方法,但没有具体回答我的问题。我正在使用Python 3.3.3。我是新手,所以请保持温柔。

我正在尝试创建一个需要用户输入的程序,但是随后我需要进行检查以查看该输入是什么数据类型,然后根据该数据类型采取一定的措施。

除了在此列表中找到的字符串以外的任何字符串:
valid_help_string_list = ['\'help\'', '\'HELP\'', 'help', 'HELP']
应打印以下内容:

“请输入有效的条目”或类似的内容。

任何整数(大于0但小于500)都应使用float()使行对齐。

任何浮点数(大于0.0但小于500.0)均有效。

为了这个项目,我假设没有人使用它的重量低于100磅或超过500磅。

不属于这些类别的任何内容也应向用户产生相同的“请输入有效响应”错误消息。

我认为对于新手来说,一个项目足够简单。该程序旨在让您输入体重,然后根据该体重创建一个象形图,并将其全部保存到我为此设置的.txt文件的下一个打开行中。或者,如果您想查看象形图的图例,则应该能够在该列表中找到的任何变化中键入帮助。

任何帮助将非常感激。

最佳答案

默认情况下,用户输入将是字符串,因此我们需要检查它是否可以变为整数或浮点型。因为无论如何要转换浮点数中的整数,所以不需要做任何复杂的事情:

def validate_input(val, min_v=100, max_v=500):
    try:
        val = float(val)
    except ValueError:
        print("Not a valid entry")
    else:
        if not min_v < val <= max_v:
            print("Value should be between {} and {}".format(min_v, max_v))
        else:
            return val
    return False

现在您的调用循环可以读取:
while True:
    val = input("...")
    if val in valid_help_string_list:
        # print help
    else:
        val = validate_input(val)
        if val:
            break
# use val

注意,这取决于validate_input的返回值是False还是大于0的数字; Python将零返回值解释为False而不到达break,因此我建议保留min_v >= 0

关于python - Python输入数据类型处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21097702/

相关文章:

javascript - 通过单击元素并将该属性传递给字段,让输入字段识别它已被填充

python - 对行进行分组并定义列聚合规则

python - Pandas :df_left.merge(df_right) 汇总统计

php - 至少选择一个复选框,PHP

php - 如何检查字符串在 PHP 中是否为 base64 有效

javascript - JQuery 验证仅适用于提交表单中的第一个元素。 [打算验证所有]

C读取所有输入一次优化

python - 我如何更改它以使用 q 表进行强化学习

python - 加入两个只有结束日期的 Pandas 数据框

validation - 如何在magento中使用验证数字范围验证?