Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 验证键盘输入_Python_Python 3.x - Fatal编程技术网

Python 验证键盘输入

Python 验证键盘输入,python,python-3.x,Python,Python 3.x,我一直在编写一个包含键盘输入的Python3程序,我想测试输入的内容,以确保它符合某些标准,即它应该是单个字符,并且只有a、b或c。 作为Python新手,我在这里拼凑了其他页面的一些代码,它似乎可以工作,但我不确定它是否遵循最佳实践(甚至是正确的编程)。因此,任何意见/改进或替代方案都是最受欢迎的 chars = set('abc') trigger = 0 while (trigger == 0): answer = input(':') if len(answer) !=

我一直在编写一个包含键盘输入的Python3程序,我想测试输入的内容,以确保它符合某些标准,即它应该是单个字符,并且只有a、b或c。 作为Python新手,我在这里拼凑了其他页面的一些代码,它似乎可以工作,但我不确定它是否遵循最佳实践(甚至是正确的编程)。因此,任何意见/改进或替代方案都是最受欢迎的

chars = set('abc')
trigger = 0
while (trigger == 0):
    answer = input(':')
    if len(answer) != 1:
        print ('Please enter only one character')
    if any ((c in chars) for c in answer):
        trigger = 1
    else:
        print ('please answer a,b or c')

创建有效输入的列表,并使用中的
进行测试。例如:

>>> rv = input()
a
>>> rv in ['a', 'b', 'c']
True
>>> rv = input()
test
>>> rv in ['a', 'b', 'c']
False

如果这是您认为可以改进的工作代码,请参阅。如果您不确定,请删除问题并进行测试。如果您知道某个特定问题,请提供解决方案。一般来说,验证用户输入的指南位于。非常感谢,您提供的链接将我带到了我要查找的内容,尽管我在搜索中没有看到该页面。您还必须为多字符添加'len(rv)==1'input@JoeIddon这是没有必要的。正如您在第二次尝试中所看到的,长度>1的字符串失败。如果您在['a','b','c']中尝试了
'aa',
它也会失败。对不起!我的错误是,我假设您在
字符串上使用
in
运算符,在这种情况下,您必须检查它的长度
1
,我的错误!当然,
len(rv)==1,而“abc”中的rv也是一个有效的答案。
非常感谢你们的帮助,我觉得有更好的方法