# -*- 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も一行で書けそうな気がしてきますが、筆者は、にわかのため、まだ分かりません。

三項演算子を使うと短くできるようです。
ワンライナーでFizzBuzz。
 print '\n'.join(str(i)*(i%3!=0 and i%5!=0) + 'Fizz'*(i%3==0) + 'Buzz'*(i%5==0) for i in xrange(1, 101))

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS