2012年12月5日水曜日

開発環境

『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7) のIV部(関数)のまとめ演習3(引数の数を増やす(減らす))を解いてみる。

その他参考書籍

3.

コード(TextWrangler)

sample.py

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

def adder(*args):
    result = args[0]
    for x in args[1:]:
        result += x
    return result

print(adder("python","javascript","perl"))
print(adder("python"))
print(adder("python","javascript"))
print(adder([1,2],['a','b','c','d'],[3,4,5]))
print(adder([1,2]))
print(adder([1,2],['a','b','c','d']))
print(adder(1.2, 3.45, 6.7))
print(adder(1.2))
print(adder(1.2, 3.45))

# 異なる型の引数を混在させた場合
try:
    print(adder("python", [1, 2]))
except Exception as err:
    print("exceptブロック")
    print(err)
try:
    print(adder([1, 2], 1.2))
except Exception as err:
    print("exceptブロック")
    print(err)
try:
    print(adder(1.2,"python"))
except Exception as err:
    print("exceptブロック")
    print(err)

# ディクショナリを引数に指定した場合
try:
    print(adder({'a':1,'b':2}, {'c':3,'d':4}))
except Exception as err:
    print("exceptブロック")
    print(err)

入出力結果(Terminal)

$ ./sample.py
pythonjavascriptperl
python
pythonjavascript
[1, 2, 'a', 'b', 'c', 'd', 3, 4, 5]
[1, 2]
[1, 2, 'a', 'b', 'c', 'd']
11.350000000000001
1.2
4.65
exceptブロック
Can't convert 'list' object to str implicitly
exceptブロック
'float' object is not iterable
exceptブロック
unsupported operand type(s) for +=: 'float' and 'str'
exceptブロック
unsupported operand type(s) for +=: 'dict' and 'dict'
$

ちなみにJavaScriptの場合。

コード(TextWrangler)

var result = "";
function adder(){
  var result = arguments[0];
  for(var i = 1; i < arguments.length; i++){
    result += arguments[i];
  }
  return result;
}

result += adder('javasciprt', 'python', 'perl') + "\n" +
  adder('javascript') + "\n" +
  adder('javascript', 'python') + "\n" +
  adder([1,2], ['a','b','c','d'], [3,4,5]) + "\n" +
  adder([1,2]) + "\n" +
  adder([1,2],['a','b','c','d']) + "\n" +
  adder(1.2, 3.45, 6.7) + "\n" +
  adder(1.2) + "\n" +
  adder(1.2, 3.45) + "\n" + 
  // 異なる型を混在させて引数に渡した場合
  adder('javascript', 1.2) + "\n" +
  adder([1.2], 1.2) + "\n" +
  adder(1.2, 'javascript') + "\n";
$('#pre0').text(result);









						

0 コメント:

コメントを投稿