開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの無料機能制限版、light版)
- Script言語: Python
『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7) のIV部(関数)のまとめ演習6(ディクショナリの和集合)を解いてみる。
その他参考書籍
6.
コード(TextWrangler)
sample.py
#!/usr/bin/env python3.3 #-*- coding: utf-8 -*- def add_dict(lhs, rhs): result = {} for k, v in lhs.items(): result[k] = v for k, v in rhs.items(): result[k] = v return result d1 = {'a':1,'b':2} d2 = {'b':3,'c':4,'d':5,'e':1} print(add_dict(d1,d2)) print(add_dict(d2, d1)) try: print(add_dict([1,2],[3,4,5])) except Exception as err: print("例外を捕捉: {0}".format(err)) def add_all_type(lhs, rhs): if type(lhs) != type(rhs): raise Exception("2つの引数の型が違います。") elif type(lhs) == dict: result = {} for k, v in lhs.items(): result[k] = v for k, v in rhs.items(): result[k] = v return result elif type(lhs) == set: result = set() return lhs.union(rhs) else: return lhs + rhs for a,b in [(1,2), ([1,2],[3,4]),(1.2,10), ('python', 'javascript'), ({'a':1,'b':2},{'c':3,'d':4,'e':5}), ({1,'a'}, {'a','b',2,3,4,5})]: try: print("{0} + {1} = {2}".format(a, b, add_all_type(a,b))) except Exception as err: print("例外を捕捉: {0}".format(err))
入出力結果(Terminal)
$ ./sample.py {'e': 1, 'd': 5, 'c': 4, 'b': 3, 'a': 1} {'e': 1, 'd': 5, 'c': 4, 'b': 2, 'a': 1} 例外を捕捉: 'list' object has no attribute 'items' 1 + 2 = 3 [1, 2] + [3, 4] = [1, 2, 3, 4] 例外を捕捉: 2つの引数の型が違います。 python + javascript = pythonjavascript {'b': 2, 'a': 1} + {'e': 5, 'd': 4, 'c': 3} = {'e': 5, 'd': 4, 'c': 3, 'b': 2, 'a': 1} {1, 'a'} + {2, 3, 4, 5, 'b', 'a'} = {1, 2, 3, 4, 5, 'b', 'a'} $
ちなみにJavaScriptの場合。
コード(TextWrangler)
var result = ""; function add_dict(a, b){ var result = {}; for(var p in a){ result[p] = a[p]; } for(var p in b){ result[p] = b[p]; } return result; } Object.prototype.toString = function(){ var result = ""; for(var p in this){ result += p + ": " + this[p] + "\n"; } return result; }; var o1 = {'a':1,'b':2}; var o2 = {'b':3,'c':4,'d':5,'e':6}; result += add_dict(o1, o2) +"\n" + add_dict(o2, o1) + "\n"; function add_all_type(a, b){ if(typeof(a) === 'object'){ if(a instanceof Array){ var result = []; for(var i = 0; i < a.length; i++){ result[i] = a[i]; } for(var j = 0; j < b.length; i++, j++){ result[i] = b[j]; } return result; } else { return add_dict(a, b); } } else { return a + b; } } result += add_all_type(1,2) + "\n" + add_all_type([1,2], [3,4]) + "\n" + add_all_type(1.2, 10) + "\n" + add_all_type("python", "javascript") + "\n" + add_all_type(o1, o2) + "\n"; $('#pre0').text(result);
0 コメント:
コメントを投稿