В вашем коде есть ошибка типа, потому что вы определили функцию getdigit
как number
как строку и n
как целое число, но затем вы назвали эту функцию как getdigit(key, char)
, где key
это строка и char
также является строкой - это одна буква из message
, поскольку она взята из for char in message
.
. Непосредственно исправить это не будет тривиальным, потому что n
должно быть index , где char
встречается в message
, но ваш код не знает индекс, и вы не можете использовать метод message.index(char)
, чтобы найти его, потому что это дает индекс первое вхождение char
, а не индекс текущего вхождения. enumerate
функция может быть использована для доступа к индексам в вашем понимании списка.
Тем не менее, было бы гораздо проще написать свой код таким образом, что вы не сможете нужны индексы. Вы можете упростить свой код, используя zip
для сопряжения букв из message
с соответствующими цифрами из key
. Это похоже на домашнее задание, поэтому я не буду показывать полное решение, но следующее может дать вам представление о том, как это сделать:
>>> message = "helloworld"
>>> key = "0123456789"
>>> for char, digit in zip(message, key):
... print('char:', char, 'digit:', digit)
...
char: h digit: 0
char: e digit: 1
char: l digit: 2
char: l digit: 3
char: o digit: 4
char: w digit: 5
char: o digit: 6
char: r digit: 7
char: l digit: 8
char: d digit: 9