Есть ли другой более простой способ написать код, который в основном проверяет каждый символ строки 'abcde'
if input == 'a' or input == 'ab' or input == 'abc' or input == 'abcd' or input == 'abcde':
return True
Есть ли другой более простой способ написать код, который в основном проверяет каждый символ строки 'abcde'
if input == 'a' or input == 'ab' or input == 'abc' or input == 'abcd' or input == 'abcde':
return True
input=='de'
? 18.05.2020 input
в качестве имен переменных. 19.05.2020 Это должно делать то же самое, что и вы.
return 'abcde'.startswith(input)
Не называйте переменные input
, так как это затенит встроенную функцию 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) для поиска. Это намного лучше, чем использование списка, который обеспечивает линейный поиск O(N).
Есть несколько симпатичных способов сделать это. startwith
, вероятно, самый эффективный, но они тоже должны работать:
используя lstrip
:
return 'abcde'.lstrip(input)!='abcde'
используя list comprehension
:
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
not not pattern.match(...)
? Если бы вы сделали это только для преобразования match в логическое значение, вы могли бы использовать bool
напрямую: bool(pattern.match(...))
14.06.2020 Вероятно, вы могли бы попробовать что-то вроде этого:
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
Позвольте мне знать, если это помогает!
Вы можете попробовать это:
If input in ['a', 'ab', 'abc', 'abcd', 'abcde']:
return True
else:
return False
"abcde".startswith("") == True
, что не совсем соответствует коду примера. 19.05.2020and input
. 19.05.2020