在一行中打印字母+ 1

时间:2018-08-26 02:14:34

标签: python

  

问题:

     

您和您的朋友创建了一个密码!

     

密码隐藏在许多行中。这是   第一行,加上第二行的第二个字母,依此类推,例如   这个:

     

基本上这是个秘密他们不会找到吗?谁在找?不!   没关系。 B + o + o +! BOO!

     

您的程序应像这样工作:

Line: Basically it's a secret


Line: Won't they find it?

Line: Who would be looking?

Line: Nah! It's fine.

Line: 

BOO! ​
  

您的程序应读取多行输入,以获取正确的   每行的一封信。然后它应该加入每个字母并打印在   大写字母。

到目前为止,我已经获得了输入的代码,将每行添加到列表中,然后当用户输入空格时停止。但是我不确定如何获得它,因此打印出第一行的第一个字母,打印出第二行的第二个字母,打印出第三行的第三个字母,等等。

listo = []
line = input("Line: ")
while line:
  listo.append(line)
  line = input("Line: ")
print(test)
for i in listo:
  print(i[0+1])

3 个答案:

答案 0 :(得分:4)

这可能有效:

lines = [ '123', 'abc', 'def' ]
print ''.join( b[a] for a,b in enumerate(lines) ).upper()

打印:

1BF

答案 1 :(得分:0)

您可以通过迭代enumerate生成的索引来实现此目的:

from functools import partial
print(''.join(s[i] for i, s in enumerate(iter(partial(input, 'Line: '), ''))).upper())

答案 2 :(得分:0)

要从第一行中获取第一个字母,并从其他行中获取+1,您将需要在循环过程中跟踪当前索引。在某些情况下,您必须考虑输入行的长度不足以获取第i个字符的地方。

listo = []
line = input("Line: ")
while line:
  listo.append(line)
  line = input("Line: ")

# Loop from index = 0 to len(listo)
for index in range(0, len(listo)):
   cur_line = listo[index]
   # If current index is less then length of the line
   if index < len(cur_line):
       print(cur_line[index]) # Print out the ith character from the line