Как остановить программу и как лучше это сделать?
Программа делает так, чтобы строка на подобие "1???10?" превращалась в "1010101". Мне нужно, чтобы если все знаки являются вопросами и если длина строки не входит в ограничения, то программа должна останавливаться. Если это возможно, то оптимизировать так, чтобы это было читаемо новичку :p
ad=str(input())
if len(ad)<1 or len(ad)>100:
print(f'Вы не вошли в ограничения')
#Вставьте закрытие программы
if len(ad)==ad.count('?'):
print(f'MANY')
#Вставьте закрытие программы
que=False
while que is False:
ad=(ad.replace('?0','10'))
ad=(ad.replace('?1','01'))
ad=(ad.replace('0?','01'))
ad=(ad.replace('1?','10'))
if ad.find('?') == -1:
que=True
if ad.find('11')!=-1 or ad.find('00')!=-1:
print(f'NO')
else:
print(f'{ad}')
Ответы (4 шт):
вызов функции exit, например
exit(0)
из любого места программы приведет к ее завершению
Лучше сделать функцию def И чтобы остановить програму нужно вставить просто return
Есть различные способы, но самый надёжный - sys.exit().
Разве что, для него надо сначало импортировать библиотеку sys с помощью import sys .
Можно ещё запихнуть все в def main(): и делать return, так даже быстреее работать, из-за специфики локальных переменных в питоне.
А вот exit(0) или os.abort() крайне не рекомендую использовать, ибо exit(0) работает через выдачу ошибки с кодом 0, а os.abort нужен лищь для экстренного завершения.
Итог: используйте sys.exit() или return
Просто добавить блок else и программа сама выйдет в конце.
ad=str(input())
if len(ad)<1 or len(ad)>100:
print(f'Вы не вошли в ограничения')
elif len(ad)==ad.count('?'):
print(f'MANY')
else:
while '?' in ad:
ad=ad.replace('?0','10').replace('?1','01').replace('0?','01').replace('1?','10')
if '11' in ad or '00' in ad:
print(f'NO')
else:
print(ad)