print()[]在Python中的含义是什么?

2024-03-29 05:45:18 发布

您现在位置:Python中文网/ 问答频道 /正文

在浏览codegolf时,我发现this

g=input();print("Approved","Summer School","Failed")[(g<7)+(g<3)]

我不明白print()之后的[]是什么意思。。。有什么澄清吗?在


Tags: inputthisprintsummerfailedschoolapprovedcodegolf
3条回答

print(x,y,...)[i]应解析为print (x,y)[i]。它只打印在tuple后面。在

只是元组索引。与此无异:

x = (1, 2, 3)[1]

它将2分配给x。在

在更复杂的变体中,选择元组的一个元素,然后传递给print。在

令人困惑的是,代码看起来像是在调用一个名为print的函数。在python3中,通过将print转换为函数,消除了这种混乱。您问题中的代码在Python3中做了完全不同的事情。在

>>> print("Approved","Summer School","Failed")[0]
Approved
>>> print("Approved","Summer School","Failed")[1]
Summer School
>>> print("Approved","Summer School","Failed")[2]
Failed

看到图案了吗?只是简单的索引。在

顺便说一下,我们总是知道(g<7)+(g<3)将是>= 0False + False)和{}(True + True)。在

回想一下,boolint的子类,True == 1和{}(这就是为什么我们可以添加bools,如上所述)。在

最后,不用说,只要加上一组括号,这种混乱就可以很容易地避免:

^{pr2}$

相关问题 更多 >