2

在遇到这个小问题之前,我一直在努力完成一项任务。

我的困境是:我的输出打印正确,但是如何让键 # 及其各自的输出整齐地打印在一起?

例子:

  • 关键1:ABCDEB

  • 关键2:EFGFHI

  • ETC

我的代码:

def main():

    # hardcode
    phrase = raw_input ("Enter the phrase you would like to decode: ")

    # 1-26 alphabets (+3: A->D)
    # A starts at 65, and we want the ordinals to be from 0-25

    # everything must be in uppercase
    phrase = phrase.upper()

    # this makes up a list of the words in the phrase
    splitWords = phrase.split()

    output = ""


    for key in range(0,26):        

        # this function will split each word from the phrase
        for ch in splitWords:

            # split the words furthur into letters
            for x in ch:
                number = ((ord(x)-65) + key) % 26
                letter = (chr(number+65))

                # update accumulator variable
                output = output + letter

            # add a space after the word
            output = output + " "

    print "Key", key, ":", output

 main()
4

3 回答 3

1

如果我理解正确,您需要重置output每个循环,并print在每个循环期间进行更改:

output = ""
for key in range(0,26):        
    ## Other stuff
print "Key", key, ":", output

到:

for key in range(0,26):        
    output = ""
    ## Other stuff
    print "Key", key, ":", output

旧结果:

Key 25 : MARK NBSL ... KYPI LZQJ

新结果:

Key 0 : MARK 
Key 1 : NBSL 
   #etc
Key 24 : KYPI 
Key 25 : LZQJ 
于 2013-09-28T01:06:13.603 回答
0

首先, in print "Key", key, ":", output,使用+而不是,(以便获得正确的字符串连接)。

您希望key它对应output于每次外for循环迭代的打印。我想我明白为什么现在没有发生。提示:你的print陈述现在是否真的属于外循环?

于 2013-09-28T01:02:45.937 回答
0

您应该查看用户指南的输入和输出部分。它经历了几种格式化字符串的方法。就个人而言,我仍然使用“旧”方法,但是由于您正在学习,我建议您看一下“新”方法。

如果我想用“旧”方法漂亮地输出这个,我会做print 'Key %3i: %r' % (key, output). 这里3i表示给一个整数三个空格。

于 2013-09-28T01:03:30.573 回答