在用户输入中接受逗号和空格
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, 3
、1 2 3
和 1,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]
我正在开发一个接受用户输入以计算均值、中位数和众数的程序。问题是我需要猜测用户将输入哪个分隔符。
例如:
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, 3
、1 2 3
和 1,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]