如果条件为假,为什么我的if语句仍在运行?

时间:2016-05-26 05:52:29

标签: python if-statement

我试图使用递归函数来解决FizzBu​​zz(但这并不是我现在遇到的问题)。我有一个 if 语句,用于检查用户是否输入了 ' Y' ' y' ,但即使条件为真,它仍会运行,我无法弄清楚原因。我想把头发拉出来。问题出在 exit_check

import sys


final = []


def fizzbuzz(n):
    if n % 5 == 0 and n % 3 == 0:
        print('Append: FizzBuzz')
        final.append('FizzBuzz')
    elif n % 3 == 0:
        print('Append: Fizz')
        final.append('Fizz')
    elif n % 5 == 0:
        print('Append: Buzz')
        final.append('Buzz')
    else:
        print('Append: ' + str(n))
        final.append(n)

    exit_check = input('Exit check: ')

    if exit_check == 'y' or 'Y':
        print('Why does this still get called with the wrong variable?: ' + exit_check)
        sys.exit()

    if n > 0:
        fizzbuzz(n - 1)
    print(final)


fizzbuzz(10)

1 个答案:

答案 0 :(得分:2)

if exit_check == 'y' or 'Y':

此子句由两个子条款组成,如果两个条件中的任何一个为真,则返回true

子条款1是exit_check == 'y'

子条款2是'Y'

在python中,非空字符串始终为True,因此此复合条件始终为True