Python 3: для цикла не работает, похоже, не могу понять, что не так

#python #python-3.x #for-loop

#python #python-3.x #for-loop

Вопрос:

 message = "¯¹ÿ½Đ8ȸjŻċʼnĀƚâɎ;ǫŹ¨ɔŵɐďȴǫŔlƩ"
def encrypt(message):
    for k in message:
        k  = chr(ord(k) * 2)
    return print(k)
encrypt(message)
 

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

Комментарии:

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

2. Вы печатаете последнее значение k where k равно chr(ord(c) * 2) where c последней букве message . Предполагаю, что вы предпочли бы добавить chr(ord(k) * 2) в другую переменную и вернуть ее.

3. Другие указали на ошибки в вашем коде. Однако код более лаконично написан в виде списка для понимания: def encrypt(message): return ''.join(chr(ord(k)*2) for k in message)

Ответ №1:

вы должны сохранить обновленное значение в другой переменной

 message = "¯¹ÿ½Đ8ȸjŻċʼnĀƚâɎ;ǫŹ¨ɔŵɐďȴǫŔlƩ"
def encrypt(message):
    temp = ''
    for k in message:
        temp  = chr(ord(k) * 2)
    return print(temp)
encrypt(message)
 

Ответ №2:

  • Вы добавляете к переменному циклу k . вы должны использовать новую переменную, поскольку переменная цикла обновляется на каждой итерации.
  • Вы возвращаете выражение print(k) is None .
 message = "¯¹ÿ½Đ8ȸjŻċʼnĀƚâɎ;ǫŹ¨ɔŵɐďȴǫŔlƩ"
def encrypt(message):
    ss = ""
    for k in message:
        ss  = chr(ord(k) * 2)
    return ss
encrypt(message)
 

Комментарии:

1. спасибо, работает отлично, не могли бы вы дать мне представление о том, что было не так?

2. k — это временная переменная, и ее значение обновляется по мере увеличения цикла, вы должны сохранить значение во временной переменной