Python 将一个字符串与另一个字符串的多个子字符串进行比较

Python 将一个字符串与另一个字符串的多个子字符串进行比较,python,string,string-comparison,Python,String,String Comparison,是否有另一种更简单的方法来编写代码,基本上检查字符串的每个字符'abcde' if input == 'a' or input == 'ab' or input == 'abc' or input == 'abcd' or input == 'abcde': return True 这应该和你放的一样 return 'abcde'.startswith(input) 您可能可以尝试以下方式: def your_函数(): #在此处添加所需的字符数 chars=“abcde” #假设您

是否有另一种更简单的方法来编写代码,基本上检查字符串的每个字符
'abcde'

if input == 'a' or input == 'ab' or input == 'abc' or input == 'abcd' or input == 'abcde':
    return True

这应该和你放的一样

return 'abcde'.startswith(input)

您可能可以尝试以下方式:

def your_函数():
#在此处添加所需的字符数
chars=“abcde”
#假设您从终端获取用户输入
用户输入=输入()
#在chars中的每个子字符串上循环
对于范围内的i(长度(字符)+1):
如果字符[:i]==用户输入:
返回真值
返回错误

让我知道这是否有帮助

不要命名变量
input
,因为它会隐藏内置函数。这样做被认为是不好的做法,只需选择另一个变量名即可

您可以使用集合检查输入是否与任何子字符串匹配:

lookups = {'a', 'ab', 'abc', 'abcd', 'abcde'}

my_input = input()

if my_input in lookups:
    return True
我们还可以使用集合理解生成此集合:

characters = 'abcde'

lookups = {characters[:i] for i in range(1, len(characters) + 1)}

my_input = input()

if my_input in lookups:
    return True

对于大型组合集,在列表上使用集合的好处是,您可以获得用于搜索的恒定时间O(1)查找。这比使用列表要好得多,列表将为您提供线性查找。

有多种可爱的方法。
startwith
可能是最有效的方法,但这些方法也应该有效:

使用
lstrip

return 'abcde'.lstrip(input)!='abcde'
使用
列表理解

return any(['abcde'[:i+1] == input for i in range(len('abcde'))])
使用
regex

   pattern = re.compile('^'+input)
   return bool(pattern.match('abcde'))
或者只是:

  return 'abcde'[:len(input)]==input
您可以尝试以下方法:

If input in ['a', 'ab', 'abc', 'abcd', 'abcde']:
    return True
else:
   return False

它们可以是“abcde”的多种组合吗?像
input=='de'
?相关:请不要使用
input
作为变量名。从描述来看,不清楚空字符串的结果应该是什么,
“abcde”。startswith(“”==True
,这与示例代码不太匹配是的,如果不想包含空字符串,我认为最好的办法是添加一个
并输入
。什么是
而不是模式。匹配(…)
?如果您只是为了将匹配转换为bool,那么可以直接使用
bool
bool(pattern.match(…)