gpt4 book ai didi

python - 三元和打印组合给出奇怪的结果

转载 作者:行者123 更新时间:2023-11-28 22:58:18 26 4
gpt4 key购买 nike

我试图使用三元来打印出一个字符串,如果是真的,如果不是的话(很简单,对吧?)。它没有给出任何错误,而且似乎不会造成任何麻烦。但是,运行时...

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='')

而且效果很好。

撇开编码不太好,为什么第一个字符串打印两次?

最佳答案

请允许我为您分解一下...

print(('['), (dr+1), (']\t'), (d[dr] if fullpath else '['), (dr+1), (']\t'), (d[dr].split("/")[len(d[dr].split("/"))-2]), sep='')

看到问题了吗?

print(*(('[',dr+1,']\t', d[dr]) if fullpath else ('[',dr+1,']\t', d[dr].split("/")[len(d[dr].split("/"))-2])), sep='')

关于python - 三元和打印组合给出奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13924709/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com