如何获得多行输入

时间:2016-08-26 15:27:54

标签: python python-2.7 python-3.x

我已编写代码将输入作为字符串列表

d=["","","","","","","","","",""]
i=0
while(True):
  s=input()
  d[i]=s
  i=i+1
  if s=="":
    break

但是我无法处理列表d以获得所需的输出。 d[0]正在存储Djokovic:Murray:2-6,6-7,7-6,6-3,6-1。现在我想处理这个字符串(或将其转换为字典)

现在我可以编写代码(使用str.split(",")函数)来计算;

  • 赢得最佳5场比赛的数量
  • 赢得3场比赛的最佳比赛次数
  • 赢得的套数
  • 获胜的游戏数量
  • 丢失的数量
  • 失去的游戏数量

2 个答案:

答案 0 :(得分:0)

这就是你想要的吗?

>>> d=[]
>>> while(True):
...   s=raw_input()
...   if s=="":break
...   temp = [s]
...   d.append(temp)
... 
a,b,7-6,7-6,6-3
c,d,7-4,7-6,6-2
e,f,6-4,7-6,6-2

>>> d
[['a,b,7-6,7-6,6-3'], ['c,d,7-4,7-6,6-2'], ['e,f,6-4,7-6,6-2']]

这会在输入中生成一个列表项,然后将该列表附加到主列表d
您现在应该能够处理d

编辑:

如果您坚持使用:,两个分隔符,那么您的生活就会变得更加困难,坚持使用一个! 修改上面的简单代码:

d=[]
while(True):
    s=raw_input()
    if s=="":break
    temp = [s]
    d.append(temp)              #d becomes a list of lists
for item in d:                  #process individual lists in d
    x=item[0].split(",")        # break up the list using the delimiter comma
    for i in range(0,len(x)):   #access each item in x
        print x[i]

输入:
德约科维奇,穆雷,2-6,6-7,7-6,6-3,6-1
布罗格斯,史密斯,2-6,6-7,7-6,6-3,6-3
琼斯,Abernathy,6-3,6-3,6-3

输出:

Djokovic    
Murray
2-6
6-7
7-6
6-3
6-1
Bloggs
Smith
2-6
6-7
7-6
6-3
6-3
Jones
Abernathy
6-3
6-3
6-3

答案 1 :(得分:0)

由于您的统计信息似乎被空白分隔符分隔,因此您可以使用str.split()将每个统计信息分隔为一个列表。这是一个演示:

stats = "Djokovic:Murray:2-6,6-7,7-6,6-3,6-1 Murray:Djokovic:6-3,4-6,6-4,6-3"

def compile_stats(stats):
    stats_lst = list(stats.split(" ")) # using str.split to 
    # split the string every time whitespace is found.
    return stats_lst 


print(compile_stats(stats)) 
# output:['Djokovic:Murray:2-6,6-7,7-6,6-3,6-1', 'Murray:Djokovic:6-3,4-6,6-4,6-3']

它需要每个统计数据,并使其成为自己独立的列表项。