首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >阅读输入的问题

阅读输入的问题
EN

Stack Overflow用户
提问于 2017-03-02 22:45:13
回答 1查看 42关注 0票数 1
代码语言:javascript
运行
复制
 while True:
   d=input()
   data=d.split(":",2)
   if d.strip()=='':
       break

这是我用来从keyboard.suppose读取数据的代码,输入是:

代码语言:javascript
运行
复制
Williams:Muguruza:3-6,6-3,6-3

我期望的输出是['Williams','Murguza','3-6,6-3,6-3'].But,我得到的输出是''(当我使用print(d)时).Why我得到的是this.Here吗我正在使用while循环,因为用户提供连续的输入,并且输入以空行终止

编辑:抱歉,输入的information.The不完整,如下所示:

代码语言:javascript
运行
复制
Djokovic:Murray:7-6,4-6,7-6,2-6,6-2
Murray:Djokovic:7-5,7-5
Williams:Muguruza:3-6,6-3,6-3

我必须读取所有的输入,最后,当用户提供空行(按两次ENTER键)时,它是input.For的末尾,每个输入我必须提取一些信息,如data和其他一些东西。我给出了完整的代码:

代码语言:javascript
运行
复制
  while True:
    d=input()
    if d.strip()=='':
        break
    data=d.split(":",2)
    try:
        b=isinstance(playerstats,dict)
    except NameError:
        playerstats={}
    if data[0] not in playerstats:
        playerstats[data[0]]={}
        playerstats[data[0]]["5setswon"]=0
        playerstats[data[0]]["3setswon"]=0
        playerstats[data[0]]["setswon"]=0
        playerstats[data[0]]["gameswon"]=0
        playerstats[data[0]]["setslost"]=0
        playerstats[data[0]]["gameslost"]=0
        playerstats[data[0]]

    if data[1] not in playerstats:
        playerstats[data[1]]={}
        playerstats[data[1]]["5setswon"]=0
        playerstats[data[1]]["3setswon"]=0
        playerstats[data[1]]["setswon"]=0
        playerstats[data[1]]["gameswon"]=0
        playerstats[data[1]]["setslost"]=0
        playerstats[data[1]]["gameslost"]=0

    if data[2].count("-")>3:
        playerstats[data[0]]["5setswon"]+=1
    else:
        playerstats[data[0]]["3setswon"]+=1
    p1=data[2][::4]
    p2=data[2][2::4]
    setswon=sum(x>y for x,y in zip(p1,p2))
    setslost=data[2].count("-")-setswon
    playerstats[data[0]]["setswon"]+=setswon
    playerstats[data[0]]["setslost"]+=setslost
    playerstats[data[1]]["setswon"]+=setslost
    playerstats[data[1]]["setslost"]+=setswon
    gameswon=sum(int(x) for x in p1)
    playerstats[data[0]]["gameswon"]+=gameswon

    playerstats[data[1]]["gameslost"]+=gameswon
    gameslost=sum(int(x) for x in p2)
    playerstats[data[0]]["gameslost"]+=gameslost
    playerstats[data[1]]["gameswon"]+=gameslost

我的代码的主要主题是为每个玩家维护一个字典,其中包含一些信息,如游戏丢失的etc..But,我得到的错误如下:

代码语言:javascript
运行
复制
 Traceback (most recent call last):
 File "<pyshell#2>", line 29, in <module>
 if data[2].count("-")>3:
 IndexError: list index out of range

我希望我用来从用户读取输入的代码是wrong.But,我真的不知道我要去哪里,wrong.The最终输出,我应该得到的是:

代码语言:javascript
运行
复制
{'Williams': {'5setswon': 0, '3setswon': 1, 'setswon': 2, 'gameswon': 0, 'setslost': 0, 'gameslost': 0}, 'Muguruza': {'5setswon': 0, '3setswon': 0, 'setswon': 0, 'gameswon': 0, 'setslost': 0, 'gameslost': 0}}

以上只是一个示例输出

EN

回答 1

Stack Overflow用户

发布于 2017-03-03 00:06:17

您的代码没有清楚地指出您试图在循环中执行print(d)的位置。下面的示例似乎达到了您的要求。它演示了与解释器的交互会话。

代码语言:javascript
运行
复制
Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> while True:
    text = input().strip()
    if not text:
        break
    data = text.split(':', 2)
    print(data)


Williams:Muguruza:3-6,6-3,6-3
['Williams', 'Muguruza', '3-6,6-3,6-3']
Traceback (most recent call last):
  File "<pyshell#7>", line 2, in <module>
    text = input().strip()
KeyboardInterrupt
>>> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42558437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档