我试图使用递归函数来解决FizzBuzz(但这并不是我现在遇到的问题)。我有一个 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)
答案 0 :(得分:2)
if exit_check == 'y' or 'Y':
此子句由两个子条款组成,如果两个条件中的任何一个为真,则返回true
子条款1是exit_check == 'y'
子条款2是'Y'
在python中,非空字符串始终为True,因此此复合条件始终为True