2016-01-28 7 views
1

Я пытаюсь взять строку, введенную пользователем, и, если она заканчивается 'ion', замените последние три символа строки и добавьте 'e'.Замена последних трех символов в строке, если они соответствуют условию

def ion2e(s): 
    if s[-3:]=='ion': 
     print (s[-3:]+'e') 
    else: 
     print (s) 
+0

Можно вы описываете усилия по отладке, которые вы предприняли, когда увидели неправильный результат? – TigerhawkT3

+0

Вы используете 's [-3:]' как для суффикса (в условии), так и для всего * до * для суффикса (в теле оператора 'if'). Один из них - и который должен быть очевидным - ошибочен. – chepner

+0

Не забудьте «принять» ваш любимый ответ и проголосовать за самого достойного (я делал это, пока у меня не было голосов на сегодняшний день). * Принять * позволяет SO удалять вопрос правильно. – Prune

ответ

1

Переместить двоеточие в печать. Вам нужна строка до -3-й элемент, а не конец строки.

def ion2e(s): 
    if s[-3:]=='ion': 
     print (s[:-3]+'e') 
    else: 
     print (s) 

t = "constitution" 
ion2e(t) 

Кроме того, вы знакомы с одним-заявление если выражения? Ваша функция может быть уменьшена до этого, если вы хотите вернуть значение вместо его печати.

def ion2e(s): 
    return s[:-3]+'e' if s[-3:]=='ion' else s 
+0

Спасибо, я новичок во всем этом и искренне пытаюсь понять. Я думаю, что перемещение толстой кишки фиксировало мою проблему! –

+0

Я начинающий, поэтому я знаю, что мой инструктор ищет что-то большее в соответствии с тем, что я терплю. Я просто придирался к толстой кишке. Еще раз спасибо! –

1

s[-3:] говорит

дают мне ы начиная 3 цифры в обратном направлении от конца, и идти до конца

Но что вы хотите sдо 3 цифры в обратном направлении с конца. Какой бы:

s[:-3] 

Так весь ваш код должен быть:

def ion2e(s): 
    if s[-3:]=='ion': 
     print (s[:-3]+'e') 
    else: 
     print (s) 
+0

Спасибо! Я понимаю эту ошибку. –

3

Использование str.endswith:

>>> def ion2e(s): 
...  return s[:-3] + 'e' if s.endswith('ion') else s 
... 
>>> ion2e('xxxion') 
'xxxe' 
>>> ion2e('xx') 
'xx' 
1

Вы также можете использовать повторно

import re 
print (re.sub("ion$", "e", 'station')) 
+0

> Некоторые люди, столкнувшись с проблемой, думают: «Я знаю, я буду использовать регулярные выражения». Теперь у них есть две проблемы. <- Джейми Завински – Matthias

+0

@ Маттиас это правда. но есть что-то очень читаемое относительно использования одного liner regexp –

Смежные вопросы