Не понимаю, почему мой цикл повторяется только один раз

#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))