2016-11-04 3 views
-8

私は最近、昨日もPythonを始めました。クラスではFizzBu​​zzテストを発見しました。私は自然に私の前に挑戦を受け入れ、これを思い付いた:PythonでFizzBu​​zzテストの正しい出力は何ですか?

count = 0 

while count <= 100: 
    if (count % 3) == 0: 
    print "Fizz" 
    count = count + 1 

    elif (count % 5) == 0: 
     print "Buzz" 
     count = count + 1 

    elif (count % 5) and (count % 3): 
     print "FizzBuzz" 
     count = count + 1 

    else: 
     print count 
     count = count + 1 

それは何の数字のみ フィズ FizzBu​​zz FizzBu​​zz フィズ FizzBu​​zz バズ フィズ FizzBu​​zz FizzBu​​zz フィズ バズ を出力しませんFizzBu​​zz Fizz FizzBu​​zz FizzBu​​zz Fizz FizzBu​​zz FizzBu​​zz フィズ FizzBu​​zz バズ フィズ FizzBu​​zz FizzBu​​zz フィズ バズ FizzBu​​zz フィズ FizzBu​​zz FizzBu​​zz フィズ FizzBu​​zz FizzBu​​zz フィズ FizzBu​​zz バズ フィズ FizzBu​​zz FizzBu​​zz フィズ バズ FizzBu​​zz Fizz FizzBu​​zz FizzBu​​zz フィズ FizzBu​​zz FizzBu​​zz フィズ FizzBu​​zz バズ フィズ FizzBu​​zz FizzBu​​zz フィズ バズ FizzBu​​zz フィズ FizzBu​​zz FizzBu​​zz フィズ FizzBu​​zz FizzBu​​zz フィズ FizzBu​​zz バズ フィズ FizzBu​​zz FizzBu​​zz フィズ バズ FizzBu​​zz フィズ FizzBu​​zz FizzBu​​zz フィズ FizzBu​​zz FizzBu​​zz フィズ FizzBu​​zz バズ フィズ FizzBu​​zz FizzBu​​zz フィズ バズ FizzBu​​zz フィズ FizzBu​​zz FizzBu​​zz フィズ FizzBu​​zz FizzBu​​zz Fizz FizzBu​​zz バズ フィズ FizzBu​​zz FizzBu​​zz フィズ バズ

私は何を求めていますことは、1:これは正しい出力と2:どのように私はプログラムをクリーンアップすることができ、私はポインタのために懇願しています。 は、ありがとう 甲斐

+3

'(count%5)と(count%3)'です。それはあなたのコードでヒットした数字のために常に真実です。 –

+3

質問、ストーリーではありません。 – zeantsoi

+2

[fizz-buzz exerciseをやり直す方法](https://en.wikipedia.org/wiki/Fizz_buzz)を見てみてください。 –

答えて

2

は、このコード行は、どちらか

if (count % 3) == 0: 

または

elif (count % 5) == 0: 
として、実行することはありません

elif (count % 5) and (count % 3): 

、これらのステートメントが発生する順番を考えてみて

が最初に実行されます。この の場合、の両方がの場合、 の場合にのみ、の単一のの条件が満たされているかどうかを確認する必要があります。

また、コード

count = count + 1 

のラインは、どこかでそれが毎回実行されます これを配置することを検討してコードのすべてのブランチに表示されます。

私はループではなく、whileループのために使用することを選ぶだろうしかし

for x in range(100): 

これは、余分なカウント変数が不要になります。

ここ

elif (count % 5) and (count % 3): 

に注意するもう一つの数の5%が== 0であれば、あなたがチェックしていない、あなただけ(%5カウント)チェックしています。 countがでない場合は、が5で割り切れる(真理値テストをチェックする)場合、if(count%5)という表現はTrueになります。他の場所で==コンパレータを省略した場合も同様です。

これは、あなたと同様のアプローチの例です。

for count in range(1, 101): 
    if count % 5 == 0 and count % 3 == 0: 
     print "FizzBuzz" 
    elif count % 5 == 0: 
     print "Buzz" 
    elif count % 3 == 0 and count % 5 == 0: 
     print "Fizz" 
    else: 
     print count 

注意すべき点:

  • forループの代わりに、ループしながら、個々の条件
  • をチェックする前に、両方の条件をチェックする(個人的な好み)
  • == 0
をチェックします
関連する問題