Я написал следующий код для печати словаря алфавита в верхнем/нижнем регистре, значения которого могут быть сдвинуты на целое число. Он продолжает возвращать только одну запись (например, {Z:z}), даже несмотря на то, что когда я использую оператор печати в цикле for, я вижу, что весь словарь печатается, как и ожидалось, независимо от того, какой сдвиг. Буду очень признателен за любые мысли о том, почему он вернет только одну запись?
def dictionary(self, shift):
'''
For Caesar cipher.
shift (integer): the amount by which to shift every letter of the
alphabet. 0 <= shift < 26
Returns: a dictionary mapping a letter (string) to
another letter (string).
'''
#create empty dictionary
alphaDict = {}
#retrieve alphabet in upper and lower case
letters = string.ascii_lowercase + string.ascii_uppercase
#build dictionary with shift
for i in range(len(letters)):
if letters[i].islower() == True:
alphaDict = {letters[i]: letters[(i + shift) % 26]}
else:
alphaDict = {letters[i]: letters[((i + shift) % 26) + 26]}
return alphaDict