在python中加密一个非常简单的代码

时间:2013-08-14 08:02:41

标签: python python-3.x decode lowercase

所以这是简短的说明: 我需要输入类似的内容:

BaSe fOO ThE AttAcK

并返回:

attack the base.

正如你可以看到解码这个我需要从相反的顺序阅读单词开始,如果单词的第一个字母isupper()然后将其设为小写并将其附加到我稍后将打印的列表中。这就是我到目前为止所做的:

# Enter your code for "BaSe fOO ThE AttAcK" here.
default = input('code: ')
listdefault = default.split()
uncrypted = []
for i in range(len(listdefault)):
  if listdefault[:-i].istitle(): # doesn't work
    i = i.lower() # dont know if this works, Should convert word to lower case.
    uncrypted.append(i)
solution = ' '.join(uncrypted)
print(solution)

有人可以告诉我如何让这个程序运作?说我不能在列表类型上使用istitle()方法..

3 个答案:

答案 0 :(得分:2)

这可以做得更简单......

text = input("Code: ")
result = [w.lower() for w in reversed(text.split()) if w[0].isupper()]
print(' '.join(result))
Code: BaSe fOO ThE AttAcK
attack the base

我希望这能让你更深入地学习Python。

顺便说一句,您不能使用.istitle()执行此任务,因为它会检查第一个字母是否为大写。

答案 1 :(得分:1)

您已接近,但您正在切换i作为索引(for i in range...)和单词本身(uncrypted.append(i))。你可能意味着listdefault[i].istitle()而不是listdefault[:-i].istitle()

最佳解决方案是将其更改为:

for w in listdefault[::-1]:
    if w.istitle():
        w = w.lower()
        uncrypted.append(w)

由于listdefault[::-1]是一种反转列表的方法(reversed(listdefault)也有效)。如果您知道如何使用列表推导,则可以在一行中完成:

solution = ' '.join([w.lower() for w in listdefault[::-1] if w.istitle()])

答案 2 :(得分:0)

这是一个可行的解决方案:

default = input('code: ')
listdefault = default.split()
uncrypted = []
for i in reversed(listdefault):
    if i[0].isupper():
        i = i.lower()
        uncrypted.append(i)
solution = ' '.join(uncrypted)
print('says:',solution)