不明白为什么我的 for 循环只迭代一次

时间:2021-06-19 23:44:13

标签: 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))

2 个答案:

答案 0 :(得分:0)

nvm,我尝试在没有功能的情况下运行它,并且运行良好

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 :(得分:0)

问题是由函数中的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))