2014年8月1日金曜日

開発環境

Head First C ―頭とからだで覚えるCの基本(David Griffiths (著)、Dawn Griffiths (著) 中田 秀基(監訳)(翻訳)、木下 哲也 (翻訳)、オライリージャパン)の10章(プロセス間通信: お話は楽しい)、長いエクササイズ(p.460)をpythonで考えてみる。

長いエクササイズ(p.460)

コード(BBEdit, Emacs)

news_opener.py

#!/usr/bin/env python3
#-*- coding: utf-8 -*-

import os
import sys
import signal
import random
import re

score = 0

def end_game(sig, stack_frame):
    print("\n最終得点:{0}".format(score))
    sys.exit(0)

def times_up(sig, stack_frame):
    print("\n時間切れ!")
    os.kill(os.getpid(), signal.SIGINT)

def error(msg):
    printf("{0}: {1}".format(msg, err))
    sys.exit(1)

signal.signal(signal.SIGALRM, times_up)
signal.signal(signal.SIGINT, end_game)

while True:
    a = random.randint(0, 10)
    b = random.randint(0, 10)
    signal.alarm(5)
    answer = input('\n{0}かける{1}はいくつですか? '.format(a, b))
    if re.match(r'^\d+$', answer):
        answer = int(answer)
    if answer == a * b:
        score += 1
    else:
        print('\n間違いです!得点:{0}'.format(score))

入出力結果(Terminal, IPython)

$ ./sample460.py 

6かける1はいくつですか? 6

5かける6はいくつですか? 30

6かける1はいくつですか? 6

10かける5はいくつですか? 50

5かける2はいくつですか? 10

6かける2はいくつですか? 
時間切れ!

最終得点:5
$ ./sample460.py 

0かける2はいくつですか? 10

間違いです!得点:0

0かける8はいくつですか?   C-c C-c
最終得点:0
$

0 コメント:

コメントを投稿