Differences between revisions 2 and 3
Revision 2 as of 2019-03-28 13:39:06
Size: 603
Comment:
Revision 3 as of 2019-03-28 14:01:49
Size: 9621
Comment:
Deletions are marked like this. Additions are marked like this.
Line 25: Line 25:
=== 関数 ===





=== メイン ===
=== 解答例1 (exam_02_01a_price_table.py) ===
Line 33: Line 28:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ==============================================================================
# * Copyright (c) 2018 IIJIMA, Tadashi
# * (IIJIMA Laboratory, Dept. of Science and Technology, Keio University).
# ==============================================================================
# ソフトウェア工学 第02回学力確認試験 exam_02_01a_price_table.py
# Exam 02-01: CSVファイルで与えられた運賃表の検索
# 2018-12-26 飯島 正 (iijima@ae.keio.ac.jp)
# ==============================================================================
import csv
# ==============================================================================
# ===== 【メイン・プログラム】 =====
# ==============================================================================
# ------ 乗車料金表の読み込み ------
fare_table = list()
with open( "fare.csv" ) as f:
    fare_reader = csv.reader( f )
    header = next( fare_reader )[1:]
    for line in fare_reader:
        fare_table.append(line[1:])
# ------------------------------------------------------------------------------
# ------ 特急料金表の読み込み ------
express_table = list()
with open( "express.csv" ) as g:
    express_reader = csv.reader( g )
    header = next( express_reader )[1:]
    for line in express_reader:
        express_table.append(line[1:])
# ==============================================================================
# ------ 表に登録されている駅数を求める -----
num_of_stations = len(header)
## print( num_of_stations )
# ==============================================================================
# ------ 読み込んだ表から運賃検索用の辞書を作成する ------
d = dict()
for x in range(num_of_stations):
    d2 = dict()
    for y in range(num_of_stations):
         d2[header[y].strip()] = int(fare_table[x][y]) + int(express_table[x][y])
    d[header[x].strip()] = d2
# ------------------------------------------------------------------------------
# ------ 対称要素の登録 ------
for x in range(num_of_stations):
    for y in range(num_of_stations):
         d[header[x].strip()][header[y].strip()] = d[header[y].strip()][header[x].strip()]
# ==============================================================================
# ------ 乗車駅と降車駅を入力し,運賃を計算する ------
station1 = input( "乗車駅> ")
station2 = input( "降車駅> ")
print( d[station1][station2] )
# ==============================================================================
Line 37: Line 83:
=== 解答例2 (exam_02_01b_price_table.py) ===

{{{#!highlight python numbers=off
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ==============================================================================
# * Copyright (c) 2018 IIJIMA, Tadashi
# * (IIJIMA Laboratory, Dept. of Science and Technology, Keio University).
# ==============================================================================
# ソフトウェア工学 第02回学力確認試験 exam_02_01b_price_table.py
# Exam 02-01: CSVファイルで与えられた運賃表の検索
# 2018-12-26 飯島 正 (iijima@ae.keio.ac.jp)
# ==============================================================================
import csv
# ==============================================================================
# ===== 【関数定義】 CSVファイルから,表内容を読み込む =====
def read_table( fname ):
    table = list()
    with open( fname ) as f:
        reader = csv.reader( f )
        header = next( reader)[1:]
        for line in reader:
            table.append(line[1:])
    return( table )
# ==============================================================================
# ===== 【関数定義】 CSVファイルから,ヘッダを読み込む =====
def read_header( fname ):
    with open( fname ) as f:
        reader = csv.reader( f )
        header = next( reader)[1:]
    return( header )
# ==============================================================================
# ===== 【メイン・プログラム】 =====
# ==============================================================================
# ------ 乗車料金表の読み込み ------
fare_table = read_table( "fare.csv" )
express_table = read_table( "express.csv" )
# ==============================================================================
# ------ 特急料金表の読み込み ------
header = read_header( "fare.csv" )
# ------ 表に登録されている駅数を求める -----
num_of_stations = len(header)
## print( num_of_stations )
# ==============================================================================
# ------ 読み込んだ表から運賃検索用の辞書を作成する ------
d = dict()
for x in range(num_of_stations):
    d2 = dict()
    for y in range(num_of_stations):
         d2[header[y].strip()] = int(fare_table[x][y]) + int(express_table[x][y])
    d[header[x].strip()] = d2
# ------------------------------------------------------------------------------
# ------ 対称要素の登録 -----
for x in range(num_of_stations):
    for y in range(num_of_stations):
         d[header[x].strip()][header[y].strip()] = d[header[y].strip()][header[x].strip()]
# ==============================================================================
# ------ 乗車駅と降車駅を入力し,運賃を計算する ------
station1 = input( "乗車駅> ")
station2 = input( "降車駅> ")
print( d[station1][station2] )
# ==============================================================================
}}}

----
=== 解答例3 (exam_02_01c_price_table.py) ===

{{{#!highlight python numbers=off
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ==============================================================================
# * Copyright (c) 2018 IIJIMA, Tadashi
# * (IIJIMA Laboratory, Dept. of Science and Technology, Keio University).
# ==============================================================================
# ソフトウェア工学 第02回学力確認試験 exam_02_01c_price_table.py
# Exam 02-01: CSVファイルで与えられた運賃表の検索
# 2018-12-26 飯島 正 (iijima@ae.keio.ac.jp)
# ==============================================================================
import csv
# ==============================================================================
# ===== 【関数定義】 CSVファイルから,表内容を読み込む =====
def read_table( fname ):
    table = list()
    with open( fname ) as f:
        reader = csv.reader( f )
        header = next( reader)[1:]
        for line in reader:
            table.append(line[1:])
    return( table )
# ==============================================================================
# ===== 【関数定義】 CSVファイルから,ヘッダを読み込む =====
def read_header( fname ):
    with open( fname ) as f:
        reader = csv.reader( f )
        header = next( reader)[1:]
    return( header )
# ==============================================================================
# ===== 【メイン・プログラム】 =====
# ==============================================================================
# ------ 乗車料金表の読み込み ------
fare_table = read_table( "fare.csv" )
express_table = read_table( "express.csv" )
# ==============================================================================
# ------ 特急料金表の読み込み ------
header = read_header( "fare.csv" )
# ------ 表に登録されている駅数を求める -----
num_of_stations = len(header)
## print( num_of_stations )
# ==============================================================================
# ------ 読み込んだ表から運賃検索用の辞書を作成する ------
d = dict()
for x in range(num_of_stations):
    d2 = dict()
    for y in range(num_of_stations):
         d2[header[y].strip()] = int(fare_table[x][y]) + int(express_table[x][y])
    d[header[x].strip()] = d2
# ------------------------------------------------------------------------------
# ------ 対称要素の登録 -----
for x in range(num_of_stations):
    for y in range(num_of_stations):
         d[header[x].strip()][header[y].strip()] = d[header[y].strip()][header[x].strip()]
# ==============================================================================
# ------ 乗車駅と降車駅を入力し,運賃を計算する ------
station1 = input( "乗車駅> ")
try:
    d2 = d[station1]
except KeyError:
    print( "乗車駅が運賃表に登録されていない" )
else:
    station2 = input( "降車駅> ")
    try:
        print( d2[station2] )
    except KeyError:
        print( "降車駅が運賃表に登録されていない" )
# ==============================================================================
}}}

----


授業-ソフトウェア工学 > 2018年度 > 試験 > 第02回 学力確認試験 > 第02回 学力確認試験 問題01


授業-2018年度-ソフトウェア工学-第02回 学力確認試験 問題01

問題01:

*

(公開)



問題 01:

[ edit]


問題

[ edit]



解答例1 (exam_02_01a_price_table.py)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ==============================================================================
# * Copyright (c) 2018 IIJIMA, Tadashi
# *       (IIJIMA Laboratory, Dept. of Science and Technology, Keio University).
# ==============================================================================
# ソフトウェア工学 第02回学力確認試験 exam_02_01a_price_table.py
# Exam 02-01: CSVファイルで与えられた運賃表の検索
#        2018-12-26 飯島 正 (iijima@ae.keio.ac.jp)
# ==============================================================================
import csv
# ==============================================================================
# ===== 【メイン・プログラム】 =====
# ==============================================================================
# ------ 乗車料金表の読み込み ------
fare_table = list()
with open( "fare.csv"  ) as f:
    fare_reader = csv.reader( f )
    header = next( fare_reader )[1:]
    for line in fare_reader:
        fare_table.append(line[1:])
# ------------------------------------------------------------------------------
# ------ 特急料金表の読み込み ------
express_table = list()
with open( "express.csv" ) as g:
    express_reader = csv.reader( g )
    header = next( express_reader )[1:]
    for  line in express_reader:
        express_table.append(line[1:])
# ==============================================================================
# ------ 表に登録されている駅数を求める -----
num_of_stations = len(header)
## print( num_of_stations )
# ==============================================================================
# ------ 読み込んだ表から運賃検索用の辞書を作成する ------
d = dict()
for x in range(num_of_stations):
    d2 = dict()
    for y in range(num_of_stations):
         d2[header[y].strip()] = int(fare_table[x][y]) + int(express_table[x][y])
    d[header[x].strip()] = d2
# ------------------------------------------------------------------------------
# ------ 対称要素の登録 ------
for x in range(num_of_stations):
    for y in range(num_of_stations):
         d[header[x].strip()][header[y].strip()] = d[header[y].strip()][header[x].strip()] 
# ==============================================================================
# ------ 乗車駅と降車駅を入力し,運賃を計算する ------
station1 = input( "乗車駅> ")
station2 = input( "降車駅> ")
print( d[station1][station2] )
# ==============================================================================


解答例2 (exam_02_01b_price_table.py)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ==============================================================================
# * Copyright (c) 2018 IIJIMA, Tadashi
# *       (IIJIMA Laboratory, Dept. of Science and Technology, Keio University).
# ==============================================================================
# ソフトウェア工学 第02回学力確認試験 exam_02_01b_price_table.py
# Exam 02-01: CSVファイルで与えられた運賃表の検索
#        2018-12-26 飯島 正 (iijima@ae.keio.ac.jp)
# ==============================================================================
import csv
# ==============================================================================
# ===== 【関数定義】 CSVファイルから,表内容を読み込む =====
def read_table( fname ):
    table = list()
    with open( fname ) as f:
        reader = csv.reader( f )
        header = next( reader)[1:]
        for line in reader:
            table.append(line[1:])
    return( table )
# ==============================================================================
# ===== 【関数定義】 CSVファイルから,ヘッダを読み込む =====
def read_header( fname ):
    with open( fname  ) as f:
        reader = csv.reader( f )
        header = next( reader)[1:]
    return( header )
# ==============================================================================
# ===== 【メイン・プログラム】 =====
# ==============================================================================
# ------ 乗車料金表の読み込み ------
fare_table = read_table( "fare.csv" )
express_table = read_table( "express.csv" )
# ==============================================================================
# ------ 特急料金表の読み込み ------
header  = read_header( "fare.csv" )
# ------ 表に登録されている駅数を求める -----
num_of_stations = len(header)
## print( num_of_stations )
# ==============================================================================
# ------ 読み込んだ表から運賃検索用の辞書を作成する ------
d = dict()
for x in range(num_of_stations):
    d2 = dict()
    for y in range(num_of_stations):
         d2[header[y].strip()] = int(fare_table[x][y]) + int(express_table[x][y])
    d[header[x].strip()] = d2
# ------------------------------------------------------------------------------
# ------ 対称要素の登録 -----
for x in range(num_of_stations):
    for y in range(num_of_stations):
         d[header[x].strip()][header[y].strip()] = d[header[y].strip()][header[x].strip()] 
# ==============================================================================
# ------ 乗車駅と降車駅を入力し,運賃を計算する ------
station1 = input( "乗車駅> ")
station2 = input( "降車駅> ")
print( d[station1][station2] )
# ==============================================================================


解答例3 (exam_02_01c_price_table.py)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ==============================================================================
# * Copyright (c) 2018 IIJIMA, Tadashi
# *       (IIJIMA Laboratory, Dept. of Science and Technology, Keio University).
# ==============================================================================
# ソフトウェア工学 第02回学力確認試験 exam_02_01c_price_table.py
# Exam 02-01: CSVファイルで与えられた運賃表の検索
#        2018-12-26 飯島 正 (iijima@ae.keio.ac.jp)
# ==============================================================================
import csv
# ==============================================================================
# ===== 【関数定義】 CSVファイルから,表内容を読み込む =====
def read_table( fname ):
    table = list()
    with open( fname ) as f:
        reader = csv.reader( f )
        header = next( reader)[1:]
        for line in reader:
            table.append(line[1:])
    return( table )
# ==============================================================================
# ===== 【関数定義】 CSVファイルから,ヘッダを読み込む =====
def read_header( fname ):
    with open( fname  ) as f:
        reader = csv.reader( f )
        header = next( reader)[1:]
    return( header )
# ==============================================================================
# ===== 【メイン・プログラム】 =====
# ==============================================================================
# ------ 乗車料金表の読み込み ------
fare_table = read_table( "fare.csv" )
express_table = read_table( "express.csv" )
# ==============================================================================
# ------ 特急料金表の読み込み ------
header  = read_header( "fare.csv" )
# ------ 表に登録されている駅数を求める -----
num_of_stations = len(header)
## print( num_of_stations )
# ==============================================================================
# ------ 読み込んだ表から運賃検索用の辞書を作成する ------
d = dict()
for x in range(num_of_stations):
    d2 = dict()
    for y in range(num_of_stations):
         d2[header[y].strip()] = int(fare_table[x][y]) + int(express_table[x][y])
    d[header[x].strip()] = d2
# ------------------------------------------------------------------------------
# ------ 対称要素の登録 -----
for x in range(num_of_stations):
    for y in range(num_of_stations):
         d[header[x].strip()][header[y].strip()] = d[header[y].strip()][header[x].strip()] 
# ==============================================================================
# ------ 乗車駅と降車駅を入力し,運賃を計算する ------
station1 = input( "乗車駅> ")
try:
    d2 = d[station1]
except KeyError:
    print( "乗車駅が運賃表に登録されていない" )
else:
    station2 = input( "降車駅> ")
    try:
        print( d2[station2] )
    except KeyError:
        print( "降車駅が運賃表に登録されていない" )
# ==============================================================================


SoftEng: 2018/Exam/02/01/IndexPage (last edited 2019-03-28 14:01:49 by TadashiIijima)