開発環境
- 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 コメント:
コメントを投稿