開発環境
- OS X Lion - Apple(OS)
- BBEdit(Text Editor)
- プログラミング言語:Perl
『初めてのPerl 第6版』(Randal L. Schwartz, Tom Phoenix, brian d foy 共著、近藤 嘉雪 訳、オライリー・ジャパン、2012年、ISBN978-4-87311-567-2)の110章(さまざまな制御構造)、10.11(練習問題)2を解いてみる。
その他参考書籍
2.
コード(BBEdit)
sample.pl
#!/usr/bin/env perl use strict; use warnings; use utf8; use 5.016; binmode STDOUT, ':utf8'; binmode STDIN, ':utf8'; use POSIX; my $debug = $ENV{DEBUG} // 1; my $secret_num = floor(1 + rand 100); print "$secret_num\n" if $debug; print "数値を入力: "; while (1) { chomp(my $n = <STDIN>); if ( $n =~ /^(\s*|exit|quit)$/ ) { last; } elsif ($n =~ /^\D*$/) { print "数値を入力してください\n"; } elsif ( $n > $secret_num ) { print "Too high\n"; } elsif ($n < $secret_num) { print "Too low\n"; } elsif ($n == $secret_num) { print "正解!\n"; last; } else { print "?\n"; } }
入出力結果(Terminal)
$ export DEBUG=1 $ ./sample.pl 74 数値を入力: 74 正解! $ export DEBUG=0 $ ./sample.pl 数値を入力: 50 Too high 25 Too high 12 Too low 19 Too low 22 Too low 23 正解! $
python3.3の場合。
コード(BBEdit)
sample.py
#!/usr/bin/env python3.3 ## Copyright © 2013 by kamimura #-*- coding: utf-8 -*- import os, random, re secret_num = random.randint(1,100) try: if os.environ['DEBUG'] == "1": print(secret_num) except Exception as err: print(err) while True: n = input() if re.search(r"^(\s*|exit|quit)$", n): break if re.search(r"^\D*$", n): print("整数を入力してください") continue n = int(n) if n > secret_num: print("Too high") if n < secret_num: print("Too low") else: print("正解!") break
入出力結果(Terminal)
$ export DEBUG=1 $ ./sample.py 11 11 正解! $ export DEBUG=0 $ ./sample.py 50 Too low 75 Too low 88 Too low 94 Too high 正解! $
@mkamimura ぴったり該当するものはありませんが、os.environ[...] で例外を出したくないだけなら、かわりに os.environ.get("DEBUG",1) などがいいかもしれませんね
— ζさん (@zetamatta) 2013年3月26日
ということでちょっとだけ方法は違うけど例外処理なくすように修正。
コード(BBEdit)
sample.py
#!/usr/bin/env python3.3 #-*- coding: utf-8 -*- import os, random, re secret_num = random.randint(1,100) if not 'DEBUG' in os.environ or os.environ['DEBUG'] == "1": os.environ['DEBUG'] = '1' print(secret_num) while True: n = input() if re.search(r"^(\s*|exit|quit)$", n): break if re.search(r"^\D*$", n): print("整数を入力してください") continue n = int(n) if n > secret_num: print("Too high") elif n < secret_num: print("Too low") else: print("正解!") break
入出力結果(Terminal)
$ export DEBUG=1 $ ./sample.py 33 33 正解! $ export DEBUG=0 $ ./sample.py 50 Too low 75 Too low 88 Too low 95 Too high 91 Too low 93 Too low 94 正解!
0 コメント:
コメントを投稿