2016-05-26 6 views
-2

私は再帰関数を使用してFizzBu​​zzを解決しようとしています(しかし、これは私がまだ問題を抱えているわけではありません)。私は、ユーザーが入力したかどうかを確認する if文を持って「Y」がまたは「Y」が、それはまだ条件が真であると私はその理由を把握できない場合でも動作します。私は私の髪を引っ張るように感じる。問題はexit_checkです。条件がfalseの場合、私のif文はまだ実行されていますか?

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

"if exit_check ..."という行に誤植があると思います。 if(exit_check in ['y'、 'Y']) – Serenity

答えて

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

この句はexit_check == 'y'

副次2 'Y'

である2つの節から構成され、2つの条件のいずれかが真

副次1である場合には真を返しています

Pythonでは空でない文字列は常にTrueです。したがって、この複合条件は常にTrueです

+0

これはもう少し意味をなさないようになっています。ありがとう! – Phil

関連する問題