我花了一个小时或更长时间在这里寻找答案。我找到了一些有用的东西,但没有具体回答我的问题。我使用的是Python 3.3.3。我是新手所以请保持温柔。
我正在尝试创建一个接受用户输入的程序,但是我需要检查输入的数据类型,然后根据该数据类型采取某种行动。
除此列表中的字符串之外的任何字符串:
valid_help_string_list = ['\'help\'', '\'HELP\'', 'help', 'HELP']
应该导致打印:
'请输入有效的条目'或类似的内容。
任何整数(大于0但小于500)都应该使用float()来使行排成一行。
任何浮动(超过0.0但低于500.0)都有效。
为了这个项目,我假设没有人使用它将重量低于100磅或超过500.
任何不属于这些类别的内容也应该向用户提供相同的“请输入有效回复”错误消息。
我认为对于一个新手而言,这个项目很简单。该程序旨在让您输入您的重量,然后根据该重量创建一个象形图,并将其全部保存在我为其设置的.txt文件的下一个打开行。或者,如果您想查看象形图的图例,您应该能够在该列表中找到的任何变体中键入帮助。
非常感谢任何帮助。
答案 0 :(得分:0)
默认情况下,用户输入将是一个字符串,因此我们需要检查它是否可以变为整数或浮点数。因为你想要在浮点数中转换整数,所以不需要做任何复杂的事情:
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
。