如何在python中存储for循环的所有迭代

时间:2018-10-07 22:29:15

标签: python python-3.x function loops for-loop

这就是我所拥有的。这是一个我必须采用随机字符串的程序,例如)“]] [] [sfgfbd [pdsbs] \ bdgb”;并删除所有特殊字符。 “ Strip”功能可达到其目的。

NSBundle

在“解码”功能中我需要带材的输出,但是无论如何我都无法弄清楚存储“索引”的迭代次数

message=(str.lower(input("Enter a Coded message: ")))
offset=int(input("Enter Offset: "))
alphabet="abcdefghijklmnopqrstuvwxyz"
def strip(text):
    print("Your Lower case string is: ",message)
    print("With the specials stripped: ")
    for index in text:
        if index in alphabet:
            print(index, end="")
    print()
    return strip

因此,“解码”仅采用原始“消息”输入的输出。但是,“ Palin”成功获取了解码的值。

def decode(character):
    encrypted= ""
    for character in message:
        global offset
        if character == " ":
            encrypted+= " "
        elif ord(character) + offset > ord("z"):
            encrypted+=chr(ord(character) +offset - 26)
        else:
            encrypted+= chr(ord(character)+(offset))
    print("the decoded string is: ",encrypted,end=" ")
    print()

1 个答案:

答案 0 :(得分:1)

请不要混淆printreturn

您需要仔细查看方法的输出(它们返回的内容,而不是它们打印到控制台的内容):

  • strip()palin()方法正在返回对自身的引用,而不是与其输入有关的任何有用信息。
  • decode()方法未返回任何内容。

要解决此问题,您可以在方法内部使用一个变量,该变量是使用所需逻辑基于输入变量构建的。例如:

def strip(text):
    print("Your Lower case string is: ",text)
    print("With the specials stripped: ")
    stripped_text = "" # <-- create and initialise a return variable
    for index in text:
        if index in alphabet:
            stripped_text += index # <-- update your return variable
            print(index, end="")
    print()
    return stripped_text # <-- return the updated variable

然后,您需要为decode()做类似的事情,尽管这里您已经有一个输出变量(encrypted),所以您只需要在方法结束时return就可以了。

palin()方法不需要返回任何内容:它只会打印出结果。


一旦完成这项工作,就应该考虑如何使用Python语言的其他功能来更轻松地实现目标。

例如,您可以使用replace()来简化strip()方法:

def strip(text):
    return text.replace('[^a-z ]','') # <-- that's all you need :)