2015-10-14 3 views
-4

Я должен написать функцию, которая изменит некоторые символы в строке на основе пользовательских входов. это казалось очень просто, как я просто использовал функцию замены, как вы можете увидетьподстановка в виде списка пар

myStr = "Python Program" 
myStr = myStr.replace('o', '/') 
print(myStr) 

Pyth/n Pr/gram 

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

pairs = [['P', '$'], ['o', '/']] 
my_str = "Python Program" 
my_str = substitute_pairs(my_str, pairs) 
print(my_str) 

$yth/n $r/gram 

я хотел сделать какой-то цикл, но я действительно не знаю, с чего начать.

+5

это похоже домашнее задание. Вы должны google для циклов и списков. – postelrich

+0

вот цикл, чтобы вы могли перебирать строку: 'for char in string' теперь проверяем ваш' char' на нужную букву, находим индекс и заменяем его :) – Onilol

+0

Мысль закрыть как дубликат, но не может вполне понимают, что ОП просит так проголосовать за закрытие, как неясно. –

ответ

1

Просто включите pairs в Словаре, и перебирать строку замены в случае необходимости:

def substitute_pairs(my_str, pairs): 
    replacement = dict(pairs) 
    return ''.join(replacement[c] if c in replacement else c for c in my_str) 

pairs = [['P', '$'], ['o', '/']] 
my_str = "Python Program" 
my_str = substitute_pairs(my_str, pairs) 
print(my_str) 
+0

Хмм, Этот метод действительно замечательный. Но ОП не упомянул ни одного метода. Но эй, кого это волнует. Это крутой ответ. :) –

0
def sub_pairs(st,pairs): 
    l,r = pairs 
    new_string = [] 
    for ch in my_str: 
     if ch == l[0]: 
      ch = l[1] 
     elif ch == r[0]: 
      ch = r[1] 
     new_string.append(ch) 
    return ' '.join(new_string) 

print(sub_pairs("Python Program",pairs)) 

     $ y t h/n $ r/g r a m 
Смежные вопросы