在用户输入中接受逗号和空格

Accept Commas and Spaces In User Input

我正在开发一个接受用户输入以计算均值、中位数和众数的程序。问题是我需要猜测用户将输入哪个分隔符。

例如:

def get_dataset():

    while True:

        try:
            dataset = [float(_) for _ in input("\nEnter Dataset: ").split()]
        except ValueError:
            print("\nInvalid Input")
            continue

        if len(dataset) < 2:
            print("\nPlease enter at least 2 values.")
        else:
            return dataset


print(get_dataset())


>>> Enter Dataset: 12 3 4
[12.0, 3.0, 4.0]

我只设法检查空格并尝试使用 sep=', ' 但结果仍然相同,只是它删除了括号。基本上,我要做的是让程序接受 1, 2, 31 2 31,2,3 等输入。任何其他给定的分隔符只会导致输入消息无效。

按照评论中的建议,在拆分输入字符串之前,只需将逗号 , 替换为 space 字符

def get_dataset():

    while True:

        try:
            dataset = [float(_) for _ in input("\nEnter Dataset: ").replace(',', ' ').split()]
        except ValueError:
            print("\nInvalid Input")
            continue

        if len(dataset) < 2:
            print("\nPlease enter at least 2 values.")
        else:
            return dataset

样本运行

>>> print(get_dataset())
Enter Dataset: >? 12,3,4
[12.0, 3.0, 4.0]

您可以使用 translate 做一些更通用的事情(不使用正则表达式)来执行建议的替换。

def get_dataset():
    while True:
        dataset = []
        try:
            entered = input("Enter Dataset: ").\
                translate(str.maketrans(',:;', '   ')).\
                split(' ')
            dataset = [float(x) for x in entered if x != '']
        except ValueError:
            print("Invalid Input")
        if len(dataset) < 2:
            print("Please enter at least 2 values.")
        else:
            return dataset


print(get_dataset())

类似

Enter Dataset: 1,4 , 5,
[1.0, 4.0, 5.0]