LoginSignup
6
0

More than 3 years have passed since last update.

湯婆婆は参照で落ちるから名前を書かない方がいい

Last updated at Posted at 2019-08-16

千と千尋の神隠し

2019/08/16の金曜ロードショーでノーカットの『千と千尋の神隠し』が放送されました
いや〜よかった!
いつ見てもあれはいいですね!

「契約書だよ。そこに名前を書きな。働かせてやる。
その代わり嫌だとか、帰りたいとか言ったらすぐ子豚にしてやるからね。 

あの、名前ってここですか? 

そうだよもぅぐずぐずしないでさっさと書きな! 

まったく……つまらない誓いをたてちまったもんだよ。
働きたい者には仕事をやるだなんて…… 書いたかい? 

はい……あっ。 

フン。千尋というのかい? 

はい。 

贅沢な名だねぇ。 今からおまえの名前は千だ。
いいかい、千だよ。分かったら返事をするんだ、千!!」

というシーンを知っていますか?
Twitterを見つつ鑑賞していたら
https://twitter.com/SabanikiTofu/status/1162323952309424134?s=20スクリーンショット 2019-08-16 23.12.26.png
というツイートを目にしました
「これは面白い。たぶん湯婆婆は文字列の一文字目だけにしてるんだろう」と考えました

湯婆婆を作る

じゃあとりあえず湯婆婆を作ります

hot_water_old_lady.py
print("契約書だよ。そこに名前を書きな。働かせてやる。\nその代わり嫌だとか、帰りたいとか言ったらすぐ子豚にしてやるからね。\nそうだよもぅぐずぐずしないでさっさと書きな!\n\nまったく……つまらない誓いをたてちまったもんだよ。働きたい者には仕事をやるだなんて…… 書いたかい?")
name = input()
short_name = name[0]
print("はい…あっ。 \n\nフン。%sというのかい? \n\nはい。 \n\n贅沢な名だねぇ。 今からおまえの名前は%sだ。\nいいかい、%sだよ。分かったら返事をするんだ、%s!!"% (name, short_name, short_name, short_name))

はい終わり

$ python hot_water_old_lady.py
契約書だよ。そこに名前を書きな。働かせてやる。
その代わり嫌だとか、帰りたいとか言ったらすぐ子豚にしてやるからね。
そうだよもぅぐずぐずしないでさっさと書きな!

まったく……つまらない誓いをたてちまったもんだよ。働きたい者には仕事をやるだなんて…… 書いたかい?
千尋
はい…あっ。 

フン。千尋というのかい? 

はい。 

贅沢な名だねぇ。 今からおまえの名前は千だ。
いいかい、千だよ。分かったら返事をするんだ、千!!

はい、ちゃんと湯婆婆してますね
じゃあ名前を書かないでいきましょう

python hot_water_old_lady.py 
契約書だよ。そこに名前を書きな。働かせてやる。
その代わり嫌だとか、帰りたいとか言ったらすぐ子豚にしてやるからね。
そうだよもぅぐずぐずしないでさっさと書きな!

まったく……つまらない誓いをたてちまったもんだよ。働きたい者には仕事をやるだなんて…… 書いたかい?

Traceback (most recent call last):
  File "hot_water_old_lady.py", line 3, in <module>
    short_name = name[0]
IndexError: string index out of range

はい、湯婆婆が落ちましたね
文字列の""の0番目を参照したからですね

結論

湯婆婆は落ちる
cでやった人もいるらしいのでみなさんも湯婆婆作りましょう〜
https://twitter.com/cmpl_error/status/1162330445683412992?s=20

追記

2019/08/17 プログラム内のミスをご指摘いただき少し修正しました

6
0
1

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
6
0