我有一个简单的函数来测试元组中的一个项,看它是否真实。出于某种原因,所有测试都返回True(...if connection:...
),即使测试的值是1(假定为True)或0(假定为false)
我测试了1==True(output:True),1==False(False),connection是True(False)只是为了理解发生了什么
用户输入:players = [('a', 1), ('b', 0)]
功能:
def validplayers(players):
for player, connection in players:
if connection:
player
print player, connection, 1 == True, 1 == False, connection is True
输出:
a 1 True False False
b 0 True False False
connection
var正在传递一个1或0,type(connection)
将其定义为int
您的错误是查看
connection is True
。这总是False
is
tests for identity,两个表达式导致对内存中同一对象的引用如果要打印对象的真值,请使用^{} function :
1 == True
之所以有效,是因为在Python中,bool
类型是int
的子类:True
的整数值是1,False
的整数值是0
。相等性测试对其他整数值无效:注意你的
if
测试在其他方面是没有意义的;唯一要执行或不执行的是player
行,这是一个no-op表达式,它只返回对player
的引用,但由于没有其他引用,因此引用未被使用如果希望
print
语句仅在if
为true时执行,则需要将其缩进到if
右侧,并使其成为嵌套块的一部分:然后只打印播放器
a
的内容:相关问题 更多 >
编程相关推荐