我一直在尝试使用Python的一个函数,该函数致力于使字符串中的每个字母都大写,但是在字符串上使用它之后,booleans就不适用于该字符串了。你问我什么意思?好吧,我们就说下面的布尔值:
"b".upper() is "B"
".".upper() is "."
".".upper() is ".".upper()
全部为假。你知道吗
我很困惑。它的作用就像我将一个字符串转换成upper()形式后,它返回的不是同样的带大写字母的字符串(文档中说它是这样做的),而是一个全新的对象,它甚至不等于在完全相同的条件下生成的对象。你知道吗
设置断点并查看变量的实际值似乎毫无结果。我将鼠标悬停在is_graduate_input = input("Enter (y/n)").upper()
它给我一个值“Y”,因为这是我输入的。但是就在那一行之后,我的print(is_graduate_input is "Y")
语句打印出False?!?!为什么?你知道吗
python的文档说,他们的字母大写算法是在一些Unicode标准中描述的。我不想通读。我认为这没用。有人能告诉我到底怎么回事吗。我想去睡觉。我明天要上学。你知道吗
如果两个变量指向同一对象id,
is
将返回True
如果变量引用的对象相等,
==
将返回True
。你知道吗你所做的是比较两个不同的对象,因此得到错误。你知道吗
对你有用的是
假设你从
输出:
但是如果打印
a.upper()
的id,它每次都会返回一个新对象并打印一个新id输出:
这就是
"b".upper() is "B" # will return False
的原因。因为身份证不匹配。你知道吗您可以阅读有关这些线程的更多信息:
why does comparing strings in python using either or is sometimes produce
understanding pythons is operator
相关问题 更多 >
编程相关推荐