vsc*_*vsc 30 python string string-comparison
有没有另一种更简单的方法来编写代码,基本上检查字符串的每个字符 'abcde'
if input == 'a' or input == 'ab' or input == 'abc' or input == 'abcd' or input == 'abcde':
return True
Run Code Online (Sandbox Code Playgroud)
duc*_*ool 37
这应该与您放置的内容相同。
return 'abcde'.startswith(input)
Run Code Online (Sandbox Code Playgroud)
Roa*_*ner 12
不要命名变量input,因为它会影响内置函数input()。这样做被认为是不好的做法,并且很容易选择另一个变量名称。
您可以使用集合来检查输入是否与任何子字符串匹配:
lookups = {'a', 'ab', 'abc', 'abcd', 'abcde'}
my_input = input()
if my_input in lookups:
return True
Run Code Online (Sandbox Code Playgroud)
我们也可以使用集合推导来生成这个集合:
characters = 'abcde'
lookups = {characters[:i] for i in range(1, len(characters) + 1)}
my_input = input()
if my_input in lookups:
return True
Run Code Online (Sandbox Code Playgroud)
对于大量组合,在列表上使用集合的好处是您可以获得恒定的时间O(1)查找进行搜索。这比使用列表要好得多,列表将为您提供线性O(N)查找。
有多种可爱的方法可以做到。
startwith可能是最有效的,但这些也应该有效:
使用lstrip:
return 'abcde'.lstrip(input)!='abcde'
Run Code Online (Sandbox Code Playgroud)
使用list comprehension:
return any(['abcde'[:i+1] == input for i in range(len('abcde'))])
Run Code Online (Sandbox Code Playgroud)
使用regex:
pattern = re.compile('^'+input)
return bool(pattern.match('abcde'))
Run Code Online (Sandbox Code Playgroud)
要不就:
return 'abcde'[:len(input)]==input
Run Code Online (Sandbox Code Playgroud)
你可能会尝试这样的事情:
def your_function():
# Add as much chars that you want here
chars = "abcde"
# Assuming you are taking the user input from terminal
user_input = input()
# Loop over every substring from chars
for i in range(len(chars) + 1):
if chars[:i] == user_input:
return True
return False
Run Code Online (Sandbox Code Playgroud)
让我知道这是否有帮助!