パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

print関数のオーバーライドと元の関数の呼び出し

2018-06-12 | Python
1)特定の条件の時だけ、過程を表示。条件は後から決定
2)htmlのtableにまとめる。文のあとにはBRタグを追加。

という、要件が発生。

1)
print関数をオーバーライドすることに。
条件として渡しているのは文字列のみ。

さらにprint関数に命令を追加。
"clear"を渡していたら保留した表示内容を初期化
"printclear"なら保留したものを表示して初期化
その他の時は保留用のリストに文字列追加

実装後 初回...何も表示されない。

printclearでの表示にprintを使っていたので循環してました。

元のprintの呼び出しは、前もってprintを別の変数に代入でOKでした。(リネームのようなもの)


2)
保留した文字列に前後にタグを入れて入れ子も発生します。
"getbr"を渡されたら保留文にBRタグをつけ、一行にまとめて戻します。

条件によってreturn値があったりなかったりってエラーだよな、と実行してみるとできました。pythonすげー。

タグ追加は別関数にして、テーブルの入れ子は呼び出し元に実装しました。


printが目立っているのはエディタのatomの方で「なんか…やばくない?」と教えてくれているようです。

できあがったのが一つ前の記事です。
全チームが優勝するシミュレーション後編
前後編にしたのはまとめると30000字以上とかでgooブログの一行の長さの制約にひっかかるのかプレビュー表示されなかったからです。
(逆に半分のサイズでも、できるのがすごいんだけど。)

あとgooブログ、投稿するときに自動改行しないにチェックいれておかないと
投稿する時につけたBRタグが再修正時に消えてしまいます。
前記事の投稿後の修正はやめておきました。



最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。