Python:If-else语句

kri*_*ral 1 python if-statement

以下代码显示错误:

if ((type(varA) or type(varB) ) == type('t')):
    print "string involved"
elif varA<varB:
    print "RANDOM"
Run Code Online (Sandbox Code Playgroud)

错误是针对这种情况:

Test Values: varA = 0, varB = adios
Run Code Online (Sandbox Code Playgroud)

输出:

RANDOM
Run Code Online (Sandbox Code Playgroud)

而另一段代码

if ((type(varA) == type('t')) or (type(varB)== type('t'))):
    print "string involved"
elif varA<varB:
    print "RANDOM"`
Run Code Online (Sandbox Code Playgroud)

对于以下测试值:

Test Values: varA = 6, varB = adios
Run Code Online (Sandbox Code Playgroud)

输出如下:

string involved
Run Code Online (Sandbox Code Playgroud)

这两个"如果"条件有什么区别?我发现它们具有相同的逻辑!

Ósc*_*pez 5

这是错的:

if ((type(varA) or type(varB) ) == type('t')):
Run Code Online (Sandbox Code Playgroud)

它应该是:

if type(varA) == str or type(varB) == str:
Run Code Online (Sandbox Code Playgroud)

等价的:

if isinstance(varA, str) or isinstance(varB, str):
Run Code Online (Sandbox Code Playgroud)

或者更短一些:

if str in ((type(varA), type(varB)):
Run Code Online (Sandbox Code Playgroud)

  • 实际上,你甚至可以查看`isinstance`的文档:`isinstance(object,class-or-type-or-tuple) - > bool`.你可以编写`isinstance(a,(str,list))`但是你不能写`isinstance(a,[str,list])`; 试试吧,看看. (2认同)
  • @WaleedKhan`导入这个`说"虽然实用性超过了纯度." .在这种情况下,我们知道我们只会在这个对象上调用`__contains__`,所以我们不妨使用最有效的类型. (2认同)