#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
wherek
равноchr(ord(c) * 2)
wherec
последней букве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 — это временная переменная, и ее значение обновляется по мере увеличения цикла, вы должны сохранить значение во временной переменной