while True:
d=input()
data=d.split(":",2)
if d.strip()=='':
break
这是我用来从keyboard.suppose读取数据的代码,输入是:
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不完整,如下所示:
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
和其他一些东西。我给出了完整的代码:
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,我得到的错误如下:
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最终输出,我应该得到的是:
{'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}}
以上只是一个示例输出
发布于 2017-03-03 00:06:17
您的代码没有清楚地指出您试图在循环中执行print(d)
的位置。下面的示例似乎达到了您的要求。它演示了与解释器的交互会话。
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
>>>
https://stackoverflow.com/questions/42558437
复制相似问题