#python
Вопрос:
Я пытаюсь создать кодировщик со смещенной буквой в python, но по какой-то причине он прошел for
цикл только один раз, как я могу это исправить?
import string
uppercase = list(string.ascii_uppercase)
a = input("Your word: ")
def encode(str):
for i in str:
currentletterindex = uppercase.index(i)
shifted = uppercase[currentletterindex 1]
return shifted
print(encode(a))
Комментарии:
1. Я не уверен в том, чего вы пытаетесь достичь, но в
return
вашемfor
цикле есть оператор, поэтому вы всегда будете выходить из функции во время ее первой итерации.2. Когда все остальное терпит неудачу. просмотрите документацию (
return
заявления.
Ответ №1:
видеорегистратор, я пытался запустить его без функции, и он хорошо работает
import string
uppercase = list(string.ascii_uppercase)
a = input("Your word: ")
for i in a:
if i in uppercase:
current_index = uppercase.index(i)
shifted = uppercase[current_index 1]
print(shifted, end='')
Комментарии:
1. Проблема была в вашем заявлении о возврате. Вы должны вернуться только тогда, когда запрос будет выполнен полностью.
Ответ №2:
Проблема вызвана return
оператором в функции. Оператор return останавливает функцию и заставляет ее возвращать значение. Вы должны вызывать return только тогда, когда закончите все, что вам нужно сделать в этой функции. Вы можете решить эту проблему, добавив выходные данные в строку.
Код:
import string
uppercase = list(string.ascii_uppercase)
a = input("Your word: ")
def encode(input_str):
output_str = ""
for letter in input_str:
currentletterindex = uppercase.index(letter)
shifted = uppercase[currentletterindex 1]
output_str = shifted
return output_str
print(encode(a))