2013年3月26日火曜日

開発環境

『初めての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
正解!
$

ということでちょっとだけ方法は違うけど例外処理なくすように修正。

コード(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 コメント:

コメントを投稿