1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pythonワンライナーでがんばるぞい!

Last updated at Posted at 2017-09-11

##元ネタ
今日も1日がんばるぞい!
×
Pythonで作ったひどいものまとめ - nishio(ニコニコ動画)

どちらも古いネタだがやってしまったものはしょうがない。

##ぞい!

>>> import itertools, random; goal='今日も1日がんばるぞい!' ; dic = [['今日','ぞい'],[''],['1','ぞい'],['','ぞい'],['がん','ぞい'], ['ばる','ぞい'], ['ぞい!']] ; gen = ( ''.join( [ random.choice(x) for x in dic ] ) for i in itertools.repeat(0)) ; tw = itertools.takewhile( lambda x : x!=goal , gen ) ; ls = list(tw) ; print '\n'.join(ls) + '\n' + goal + '\n🌟 がんばるまで' + str(len(ls)) + 'zoiでした🌟'"

スクリーンショット 2017-09-11 22.49.23.png

##がんばる
無限リストやジェネレータなど、以外^H^H意外と勉強になった気がする。
※広域変数回避版を作成中。できたら更新予定。
できました。今度はインデントで整形してみました。
.oO(ここまでがっつりやっちゃうと、ワンライナーとは・・・ってなるな。)

import itertools, random;
print [
    '\n'.join(
          ls + 
          ['今日も1日がんばるぞい!'] + 
          ['🌟 がんばるまで' + str(len(ls)) + 'zoiでした🌟']
    ) for ls in [list(
        itertools.takewhile(
            lambda(x):x!='今日も1日がんばるぞい!' ,
            ( ''.join(
                [ random.choice(x) for x in
                    [['今日','ぞい'], [''],
                     [   '1','ぞい'], ['','ぞい'],
                     ['がん','ぞい'], ['ばる','ぞい'],
                     ['ぞい!']
                    ]
                ] 
             ) for i in itertools.repeat(0)
            )
        )
    )]
][0]

Python3の別解が来てますね。早すぎ^H^H^Hありがたい、勉強になります。

  • print文じゃなくてprint命令だとこういうふうに表現の幅が広がるのか。
  • %でフォーマット表現できるの忘れてた・・・
  • 使い捨てを明示するためのhoge とか _ とか、なるほど。
1
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?