Letter replacer - suggestions?

MRAB python at mrabarnett.plus.com
Mon Dec 7 12:12:02 EST 2020


On 2020-12-07 15:48, Bischoop wrote:
> 
> I worked on my wee script that replaces a letters: https://bpa.st/OYBQ .
> I would like to have some suggestions about the code from more
> experienced programmers, the code does work and do its job but perhaps
> could work in a better way.
> 
> Thanks
> 

 > word = input( f'input word you want to change letters in: ')

There's no need for the f prefix.

 > print(f' Your word to change: ,{word}')

Is the comma a typo?

 > word_list = list(word)
 > change_this = input(f'Enter the letters you want to change: ')

There's no need for the f prefix.

 > replace_with = input(f'Enter the letters to replace with: ')

There's no need for the f prefix.

 > change_this_list = list(change_this)
 > replace_with_list = list(replace_with)
 >
 > while True:
 >     try:
 >         for element in word_list:
 >             for x in change_this_list:
 >                 if element == x:
 >                     to = word_list.index(element)
 >                     replace = change_this_list.index(x)
 >                     word_list[to] = replace_with_list[replace]
 >         new_word = ''.join(word_list)
 >         print(f'{new_word}')

The f-string is overkill. You might as well just have:

          print(new_word)

 >         break
 >     except:

Avoid a 'bare' except unless you _really_ mean it, which is virtually 
never. Catch only those exceptions that you're going to handle.

 >         print(f'nope')


You can make it a lot shorter and faster by using a dict. The entire 
while loop section can be replaced with:

replacements = dict(zip(change_this, replace_with))
new_word = ''.join(replacements.get(letter, letter) for letter in word)
print(new_word)


More information about the Python-list mailing list