開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Python 3.4 (プログラミング言語)
Head First C ―頭とからだで覚えるCの基本(David Griffiths (著)、Dawn Griffiths (著) 中田 秀基(監訳)(翻訳)、木下 哲也 (翻訳)、オライリージャパン)の10章(プロセス間通信: お話は楽しい)、長いエクササイズ(p.460)をpythonで考えてみる。
長いエクササイズ(p.460)
コード(BBEdit, Emacs)
sample460.py
#!/usr/bin/env python3
#-*- coding: utf-8 -*-
import sys
import os
import signal
import random
score = 0
def endGame(sig, stack_frame):
print('\n最終得点:{0}'.format(score))
sys.exit(0)
def timesUp(sig, stack_frame):
print('\n時間切れ')
os.kill(os.getpid(), signal.SIGINT)
signal.signal(signal.SIGALRM, timesUp)
signal.signal(signal.SIGINT, endGame)
while True:
a = random.randrange(11)
b = random.randrange(11)
signal.alarm(5)
print('\n{0}かける{1}はいくつですか?'.format(a, b), end='')
txt = input()
try:
if int(txt) == a * b:
score += 1
else:
print('\n間違いです!得点:{0}'.format(score))
except Exception as err:
print(type(err), err)
入出力結果(Terminal, IPython)
$ ./sample460.py 7かける3はいくつですか?21 10かける5はいくつですか?50 0かける8はいくつですか? 時間切れ 最終得点:2 $ ./sample460.py 0かける3はいくつですか?0 7かける4はいくつですか? 時間切れ 最終得点:1 $ ./sample460.py 4かける3はいくつですか? 時間切れ 最終得点:0 $ ./sample460.py 0かける5はいくつですか?100 間違いです!得点:0 4かける8はいくつですか?ab <class 'ValueError'> invalid literal for int() with base 10: 'ab' 8かける8はいくつですか? 時間切れ 最終得点:0 $ echo $? 0 $
0 コメント:
コメントを投稿