Python语法if语句

Python语法if语句,python,if-statement,Python,If Statement,我现在有 seq1 = "--MFA" seq2= "--MFU" for i in range(0, len(seq1)): if seq1[i] or seq2[i] == '-': print "hi" else: print "bye" 为什么它会打印5次“hi”(即使seq1[i]和seq1[i]是M、F、A/U)。起初我认为这是一个正则表达式问题,但即使避开连字符也会产生相同的结果 if seq1[i] or seq2[i]

我现在有

seq1 = "--MFA"
seq2= "--MFU"

for i in range(0, len(seq1)):

    if seq1[i] or seq2[i] == '-':

        print  "hi"
    else:
        print "bye"
为什么它会打印5次“hi”(即使seq1[i]和seq1[i]是M、F、A/U)。起初我认为这是一个正则表达式问题,但即使避开连字符也会产生相同的结果

if seq1[i] or seq2[i] == '-':
此条件表示如果
seq1[i]
为真或
seq2[i]='-'
执行以下操作。在这种情况下,seq1[i]是正确的5倍。然后,它会打印“hi”5次


此条件表示如果
seq1[i]
为真或
seq2[i]='-'
执行以下操作。在这种情况下,seq1[i]是正确的5倍。然后,它打印“hi”5次。

如果seq1[i]或seq2[i]='-':

指:

if(seq1[i])或(seq2[i]='-'):

如果
seq[i]
的值为
True
(即,如果
bool(seq1[i])==True
),则条件语句将立即为True,因为
。使用
运算符,如果一侧为
True
,则条件运行

请注意,
bool(seq1[i])
将始终为True,因为任何长度的字符串都被视为True


因此,将打印
'hi'

如果seq1[i]或seq2[i]='-':

指:

if(seq1[i])或(seq2[i]='-'):

如果
seq[i]
的值为
True
(即,如果
bool(seq1[i])==True
),则条件语句将立即为True,因为
。使用
运算符,如果一侧为
True
,则条件运行

请注意,
bool(seq1[i])
将始终为True,因为任何长度的字符串都被视为True


因此,
'hi'
被打印出来。

这里有许多可供选择的选项

if '-' in (seq1[i], seq2[i]):
简洁,但读起来很有趣

if seq1[i] == '-' or seq2[i] == '-':
感觉更自然

使用
zip

for i, j in zip(seq1, seq2):

    if i == '-' or j == '-':
        print  "hi"
    else:
        print "bye"
如果将更多序列循环在一起,扩展比较的一个好方法是使用
any

for item in zip(seq1, seq2, seq3, seq4, ...):
    if any(i == '-' for i in item):
        print  "hi"
    else:
        print "bye"

这里有许多可供选择的方法

if '-' in (seq1[i], seq2[i]):
简洁,但读起来很有趣

if seq1[i] == '-' or seq2[i] == '-':
感觉更自然

使用
zip

for i, j in zip(seq1, seq2):

    if i == '-' or j == '-':
        print  "hi"
    else:
        print "bye"
如果将更多序列循环在一起,扩展比较的一个好方法是使用
any

for item in zip(seq1, seq2, seq3, seq4, ...):
    if any(i == '-' for i in item):
        print  "hi"
    else:
        print "bye"
如有疑问,请使用REPL(空闲或在shell中)并键入
'-'或'2'>>'-'
'-'或'2'='-'>>'-'
因此您可以猜测它总是返回左侧部分,因为它被解释为True。如果有疑问,请使用REPL(空闲或在shell中)并键入
'-'或'2'>>'-'
'-'或'2'='-'>>'-'
因此您可以猜测它总是返回左边的部分,因为它被解释为True。