замена элемента строки без использования replace

Скажите пожалуйста, что я делаю не так. не идет замена. Спасибо за помощь*

def my_string_replace(args):
    a = input('букву: ')
    b = input('замену: ')
    args = list(args)
    args = ' '.join(args)

    for i in args:
        if a == i:
            a = b

    return args

print(my_string_replace('Hello world'))

Ответы (1 шт):

Автор решения: CrazyElf

Например, так:

def my_string_replace(args):
    a = input('букву: ')
    b = input('замену: ')
    ret = [b if i == a else i for i in args]
    return ''.join(ret)

print(my_string_replace('Hello world'))

Или так, если уж хотите через списки:

def my_string_replace(args):
    a = input('букву: ')
    b = input('замену: ')
    args = list(args)
    for i,x in enumerate(args):
        if x == a:
            args[i] = b
    return ''.join(args)

print(my_string_replace('Hello world'))

А у вас что-то не очень осмысленное в коде происходит. Например, тут вы просто вставили между буквами пробелы. Зачем??

    args = list(args)
    args = ' '.join(args)

А тут вы поменяли a на b, но args при этом ведь никак не меняется. И строку нельзя менять всё-равно, а у вас args уже опять строка тут, а не список.

    for i in args:
        if a == i:
            a = b
→ Ссылка