使用两个变量了解 python 打印输出


>>> a=10
>>> print(str(a)[a==10])
0
>>> print(str(a)[a=='10'])
1
>>> print(str(a)[a=='11'])
1

上述 0 和 1 的结果是如何获得的?

让我们暂时搁置print语句。

  1. 在方括号内,正在计算的表达式将生成布尔值。
    • a==10之所以Truea是因为int等于 10,a=='10'False是因为a不是值'10'str
  2. 这些布尔值中的每一个都隐式转换为 int,因为方括号正在索引字符串。因此,True成为索引 1,False成为索引 0。
  3. 字符串已编制索引。'1'位于'10'的索引 0 处,'0'位于索引 1。请注意,返回的是字符串而不是整数,这是因为整个表达式的结果,例如str(a)[a==10]是所有示例中的字符串。

所有这些都是在没有考虑print()的情况下发生的。print()只是将表示形式打印到屏幕上。0整数和字符串'0'在屏幕上看起来完全相同。尝试使用type()来理解这一点。

这仅仅是因为字符串中的索引 让我解释一下

当你执行str(a)时,你正在将a类型转换为字符串,从而将 10 转换为"10",其中"10"是包含 2 个字符("1"和"0")的字符串

现在,如果您有一个包含 2 个字符的字符串,则第 0 个索引中的字符是第一个字符('1'),而第一个索引中的字符是第二个字符('0')

animal = 'cat'
print(animal[0])
>>'c'
print(animal[1])
>>'a'
print(animal[2]) 
>>'t'

继续前进,现在在方括号内你有布尔语句,当值为True时,输出为 1,当值为False时,输出为 0

因此10==10为真,即1,因此str(a)[a==10]str(a)[1]为0(第一个索引,但"10"的第2个字符)

10=='10'false这是0因此str(a)[a=='10']str(a)[0]1(第 0 个索引,但第 1 个字符 '10')

10=='11'false0

因此与第二种情况相同

str(a)[a=='11']str(a)[0]1(第 0 个索引,但第 1 个字符为">10")

a = 10, a is a integer value 10 

在打印() 10 == 10 是假的,所以它将打印 str(a) 的第二个位置 即 0 10 == '10' 为真,因此它将打印 str(a) 的第一个位置 即 1

例:

a = 12
print(str(a)[4 == 4]) # output 2

最新更新