Чтобы выполнить цикл последовательности и завершить цикл, если условие не выполнено, вы можете использовать break
:
for char in string:
if char not in ('-', '+'):
break
do_something_with(char)
Однако, если вы хотите просто собрать элементы, соответствующие условию,возможно, вы ищете itertools.takewhile
:
def find_sign_prefix(s):
sign_prefix = list(itertools.takewhile(lambda char: char in ('-', '+'), s))
return sign_prefix
print find_sign_prefix("--+-++---3.141592+-+")
# '--+-++---'
Или специально для проверки префикса строки вы можете использовать регулярное выражение:
def find_sign_prefix(s):
# `[+-]*` means "a '+' or '-' character, zero or more times";
# `re.search` only matches at the beginning of a string;
# group 0 is the matched substring
return re.search([+-]*, s).group(0)