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