# -*- coding: cp932 -*-
a = 1
n = input("整数を入力してください")+1
if n < 1:
    n = 0
    print "1以上の正の整数を入力して下さい"
if n > 300:
    n = 0
    print "300未満の数を入力してください"
while a < n:
    if a % 15 == 0:
        print "FizzBuzz"
    elif a % 3 == 0:
            print "Fizz"
    elif a % 5 == 0:
            print "Buzz"
    else:
        print a
    a = a + 1



これと似たような、ナベアツ問題がありますが、1行で書いた方が居るので紹介しておきます。

["aho" if x % 3 == 0 or "3" in str(x) else x for x in range(1, 51)]

こういう書き方もあります。

[(((x%3==0 or '3' in str(x)) and 'aho') or x) for x in range(1,51)]

FizzBuzzも一行で書けそうな気がしてきますが、筆者は、にわかのため、まだ分かりません。

三項演算子を使うと短くできるようです。

for count in range(1,101): print str(count) + "Fizz" * (1 if count%3 == 0 else 0) + "Buzz" * (1 if count%5 == 0 else 0)

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS