【发布时间】:2012-12-18 00:50:46
【问题描述】:
我试图使用三元组来打印一个字符串,如果某事是真的,那么如果不是的话(足够简单,对吧?)。它没有给出任何错误,并且似乎不会造成任何麻烦。但是,运行时...
print('[',dr+1,']\t',d[dr] if fullpath else '[',dr+1,']\t',d[dr].split("/")[len(d[dr].split("/"))-2], sep='')
...打印出来
'[',dr+1,']\t'
两次。 例如,它会打印:
[1] [1] Accoustic
[2] [2] Classical
[3] [3] Epic
[4] [4] Rock
[5] [5] Spoof
[6] [6] Techno & Electronic
如果您愿意,为了查看变量是什么(这无关紧要,因为这只是一个概念问题),您可以查看代码的其余部分 here
认为这可能是变量,我尝试单独打印语句(没有三元),它们按我的预期出现(即没有奇怪的重复)。知道变量没问题,我尝试用括号括起来字符串(试图防止字符串混合)但是,由于 python 逐字解释它们,它们作为数组而不是字符串出现。此外,+ 符号(代替逗号)不起作用,因为 python 无法组合数据类型。我最终将声明更改为
print('[',dr+1,']\t',d[dr]) if fullpath else print('[',dr+1,']\t',d[dr].split("/")[len(d[dr].split("/"))-2], sep='')
而且效果很好。
抛开编码不太好,为什么第一个字符串会打印两次?
【问题讨论】: