例題(3)

*


概要

[ edit ]

*


ポイント

この課題で使うPythonの機能 (学習のヒント)

[ edit ]

この例題における解法 (問題解決のヒント)

[ edit ]

  • この例題における解法 (問題解決のヒント) ....
    • タプルで座標点を表現しましょう.

      • 二次元の平面座標で考えましょう.
        • ここでは,1項目がx座標で,2項目がy座標というようなタプルで,二次元の座標点を考えることにします
    • タプルは,変更不能な(イミュータブルな)オブジェクトです.
    • データの組を表します.
      • 順序があります.
    • 変更可能な(ミュータブルな)オブジェクトであるリストで代用できることも多いでしょう.
      • 意味合いとしては...
        • タプルは,データの組として,何項目の要素はどういう意味を持つというように,順番に意味を持たせて使うことが多いでしょう.
          • 途中で,長さが変りませんし...
          • 例えば,1項目が名前の文字列で,2項目が年齢の数値というようなタプル
          • ここでは,1項目がx座標で,2項目がy座標というようなタプルで,二次元の座標点を考えることにしましょう
        • 一方,リストは,同じ意味合いのデータを複数格納する容器として使うことも多い
          • もちろん,リストだって項の順番に意味を持たせて使うことも少なくないので,その限りではありません.
          • 追加していったり,削除したりと,やはり長さが変化しますので,何番目の要素が何を意味するといった使い方にそぐわないともいえるでしょう.
*


実行例

[ edit ]

  • 実行例(1) ... クリックすると拡大します

fig-01

*


本質的な部分 (授業中に順次公開します)

[ edit ]

# ===== 関数定義: 2点間の距離 =====
def distance( p1, p2 ):
    ( x1, y1 ) = p1
    ( x2, y2 ) = p2
    d = ((x2 - x1) ** 2 + (y2 - y1) ** 2) ** 0.5
    return( d )
  • str.split(区切り文字)メソッドは,文字列を,区切り文字で分割して,文字列のリストを作ります.
    • 分かり易いように,2次元に限定しましょう.

# ===== 関数定義: 2次元座標の入力を受け付けます =====
def input_point( message ):
    data_str = input( message )
    [x_str, y_str] = data_str.split( "," )
    p = ( float(x_str), float(y_str) )
    return( p )

*


高度な話題 (授業中,もしくは授業後に順次公開します)

[ edit ]

  • 高度な話題へのリンク: 授業の流れを阻害しないように別ページにします

    • (後日の回の授業内容にはなる可能性がありますが,この回の授業内容には含めません).


配布コード (授業中に順次公開します)

*

*

SoftEng: Python/Prog/Example/04/Ex_003a (last edited 2018-10-31 16:41:03 by TadashiIijima)