Используйте mystring.rstrip('!')
для удаления символов '!'
в конце строки; -)
Если проблема намного сложнее, правильный способ - перехватить IndexError, выданный операцией.
try:
while mystring[-1] == '!' #Will through an error if mystring is a blank string
print("Exclamation!")
mystring = mystring[:-1]
return mystring
except IndexError:
return ""
Другой способ - проверить строку на пустоту и избежать использования операции, которая вызывает исключение:
while mystring and mystring[-1] == '!': # lazy boolean expression evaluation
mystring = mystring[:-1]
return mystring
Другая версия без вычисления ленивых логических выражений:
if not mystring:
return mystring
while mystring[-1] == '!':
mystring = mystring[:-1]
if not mystring:
break
return mystring
Я лично предпочитаю вторую версию, особенно если вы меняете mystring [-1] == '!'с mystring.endswith ('!') (но в этом случае вам не нужно проверять на пустоту, потому что конец с уже делает это за вас).