我有一段要求输入的代码。输入不得包含任何数字:
def main():
invalid = []
foo = ""
foo = str(input("Enter a word: ") )
invalid = ["1","2","3","4","5","6","7","8","9","0"]
for eachInvalid in invalid:
if eachInvalid in foo:
print("Not a real word!")
main()
else:
pass
main()
到目前为止,它的工作,但我并不自豪。最好的办法是什么?例如,一个单词不包含像~@:这样的内容,所以我必须将它们添加到该列表中。如何避免这种情况,同时保持代码的干净性和可读性?你知道吗
另外,还有一个错误,如果我运行代码并键入像hello这样的内容,这是有效的,但是如果我键入了无效的内容,它会把我带回到开头,但是当我键入一个有效的词时,它仍然表示无效?例如:
Enter a word: hello
>>> ================================ RESTART ================================
>>>
Enter a word: 123
Not a real word!
Enter a word: hello
Not a real word!
如何修复此错误?在输入中查找无效字符的最佳方法是什么?你知道吗
编辑:无需担心,正则表达式很好。
您可以使用更简单的方法来测试整个字符串中的一个数字,而不是单独测试每个字母。你知道吗
虽然更复杂的验证是正则表达式的合适用例,但在这个简单的例子中,有一个内置函数
isalpha()
,它检查字符串是否只包含字母字符。你知道吗返回
True
或False
。你知道吗请注意,在Python3中,这将处理定义为“字母”的所有unicode字符。你知道吗
你可以反过来做,而不是有一个名单的伤残者,它是更好的有一个名单的有效。然后检查字符串的每个字符:
使用regex更容易,因为列出所有valids选项更容易:
regex
^[a-zA-Z_ ]*$
表示只在[a-zA-Z_ ]
中包含符号的单词如果要保留无效列表,请使用否定正则表达式:
其中
[^0-9@]
表示除括号之间定义的字符以外的任何字符相关问题 更多 >
编程相关推荐