• 検索結果がありません。

電子計算機入門

N/A
N/A
Protected

Academic year: 2022

シェア "電子計算機入門"

Copied!
23
0
0

読み込み中.... (全文を見る)

全文

(1)

九州大学学術情報リポジトリ

Kyushu University Institutional Repository

電子計算機入門

池田, 大輔

九州大学附属図書館

http://hdl.handle.net/2324/2841

出版情報:2004 バージョン:

権利関係:

(2)

電子計算機入門 第 5 (06/02)

池田 大輔

[email protected]

附属図書館

06/02 @情報基盤センター– p.1/16

(3)

目次

■ 前回課題の回答例

■ 今後の方針

■ ファイルの利用

■ ソート (並ベかえ)

(4)

前回課題の解答例

■ ある正の整数 n が与えられたとき n

i=1 i を計算しなさい

06/02 @情報基盤センター– p.3/16

(5)

前回課題の解答例

■ ある正の整数 n が与えられたとき n

i=1 i を計算しなさい

—————————————-

import sys

n = sys.argv[1] # 入力

i = 0 # カウンタ

sum = 0 # 現在までの合計値 while i <= n:

   sum = sum + i

   i = i + 1 # カウンタの更新 print sum # 結果を出力

—————————————-

(6)

今後の方針:情報の加工や表現方法

■ 出力の仕方は重要である

■ 例:第1回レポートの場合

出力はある文字列の全ての部分文字列 入力を baa とすると

[’b’, ’ba’, ’a’, ’baa’, ’aa’] # 重複なし [’a’, ’aa’, ’b’, ’ba’, ’baa’] # 辞書式順序 [’a’, ’b’, ’aa’, ’ba’, ’baa’] # 長さ+辞書式 のいずれも正解だが...

06/02 @情報基盤センター– p.4/16

(7)

よくある問題

■ 最大共通部分文字列

複数の文字列に共通な部分文字列の中で最長のものを 見つける

■ 頻出部分文字列

ゲノム配列の中で繰り返し何度も表われる部分配列を 探す問題

(8)

よくある問題

■ 最大共通部分文字列

複数の文字列に共通な部分文字列の中で最長のものを 見つける

■ 頻出部分文字列

ゲノム配列の中で繰り返し何度も表われる部分配列を 探す問題

06/02 @情報基盤センター– p.5/16

(9)

必要な技術:今後の方針

■ 文字列に応じて頻度を数える

単に数えるだけではダメ

それまで数えたすべての文字列と回数の対応表が必要

■ 文字列中から部分文字列を検索する

■ 配列の順序の並べ替え

■ ファイル中のデータを読み込む

引数 (arguments) からの入力では長い入力文字列や、

すでにあるデータを効率よく利用できない

プログラムからファイルを読み込み、入力とする

(10)

プログラムへのファイルの与え方

■ Pythonwin の引数 (Arguments) にファイル名を入力する ファイルが Z フォルダにある場合

“Arguments” の欄に “Z:FILENAME” と入力する

Z フォルダの folder フォルダの下のファイルの場合は

“Z:folderFILENAME”

プログラムと読み込みたいファイルがある場所が同じ 場合は “FILENAME” のみでよい

■ sys.argv[n] にファイル名が入る

06/02 @情報基盤センター– p.7/16

(11)

open() 関数

■ 関数 open(ファイル名, "r")

ファイルにアクセスするためのモノ (オブジェクト) 返す

"r"については付録を参照

■ 書式

f = open(sys.argv[1] ,"r")

引数の最初に与えたファイルを開く

open() が返したオブジェクトを変数 f に格納

以下では f を使ってファイルにアクセスする

(12)

ファイル読み込み

import sys

f = open(sys.argv[1], "r") all = f.readlines()

06/02 @情報基盤センター– p.9/16

(13)

ファイル読み込み

import sys

f = open(sys.argv[1], "r") all = f.readlines()

オブジェクト (f) の後にピリオドをつけて、オブジェ クトの機能を呼びだす

(14)

ファイル読み込み

import sys

f = open(sys.argv[1], "r") all = f.readlines()

オブジェクト (f) の後にピリオドをつけて、オブジェ クトの機能を呼びだす

readlines() はファイルを全てを読み、1 行を 1 つ の要素 (文字列) とする配列を返す

all にはファイル全ての内容が行ごとに代入される

06/02 @情報基盤センター– p.9/16

(15)

実習:ファイル読み込み

■ 引数で与えたファイルの各行を表示するプログラムを 書き、そのプログラム自身を表示させよ

(16)

実習:ファイル読み込み

■ 引数で与えたファイルの各行を表示するプログラムを 書き、そのプログラム自身を表示させよ

—————————————-

import sys

f = open(sys.argv[1] ,"r") all = f.readlines()

for line in all:

   print line # 各行を表示

—————————————-

■ プログラムを “Script.py” とすると、Arguments に Script.py と入力する

06/02 @情報基盤センター– p.10/16

(17)

実習:ファイル読み込み (2)

■ ファイルの各行に行番号をつけて表示するプログラムを 書け

プログラムを “Script.py” とすると、Arguments Script.py と入力する

(18)

実習:ファイル読み込み (2)

■ ファイルの各行に行番号をつけて表示するプログラムを 書け

プログラムを “Script.py” とすると、Arguments Script.py と入力する

—————————————-

import sys

f = open(sys.argv[1] ,"r") i = 1 # 行番号のカウンタ

all = f.readlines() for line in all:

   print i, ":", line # 各行を表示

—————————————-

06/02 @情報基盤センター– p.11/16

(19)

配列に対する演算

注: s は配列

■ min(s), max(s)s の最小と最大値

■ s.sort()s の要素を辞書式順序に並べかえ

■ s.reverse()s の要素を逆順に並べかえ

(20)

実習:配列要素の大小関係

■ 以下のプログラムを入力し、実行してみなさい

—————————————-

array = ["baa", "accc", "abc", "bab"]

print array.max(), array.min() array.sort()

print array

array = [7, -1, 3, 0]

array.sort() print array

06/02 @情報基盤センター– p.13/16

(21)

課題 ( 提出不要 ) :頻度カウント

■ あなたは、ある自動車メーカーから依頼を受け、街頭を 走る車の台数を車種ごとに調べないといけません。

あなたは車に詳しく、実物を見ればその車種名は即座に 分かるものとします。

問題 どのような紙を用意するか?

新たに一台の車を見たときに、どのような処理をすれ ばよいか?

(22)

今日の課題

■ ファイルの中身を、行ごとに辞書式順序に並べかえて 出力せよ

baa accc abc bab

というファイルがあるとき、これを abc

accc baa bab

と出力させること

06/02 @情報基盤センター– p.15/16

(23)

付録: open() 関数

■ 関数 open(ファイル名、モード)

■ モードは「読み込み ("r")」、「書き込み ("w")」、「追加 ("a")」などを指定する

■ 書式

f = open(’sample’ ,"r")

“sample” というファイルを開く

open() が返したオブジェクトを変数 f に格納

参照

関連したドキュメント

日本語で書かれた解説がほとんどないので , 専門用 語の訳出を独自に試みた ( たとえば variety を「多様クラス」と訳したり , subdirect

[r]

 当図書室は、専門図書館として数学、応用数学、計算機科学、理論物理学の分野の文

機器名称 相 銘板容量(kW) 入力換算 入力容量(kW) 台数 現在の契約電力.

We have seen the place of NyAya among branches of science according to the fourteen-fold division, which Jayanta introduces with the intention of showing a Veda-oriented map

The purpose of the Graduate School of Humanities program in Japanese Humanities is to help students acquire expertise in the field of humanities, including sufficient

Daoxuan 道 璿 was the eighth-century monk (who should not be confused with the Daoxuan 道宣 (596–667), founder of the vinaya school of Nanshan) who is mentioned earlier in

N 9 July 2017, the United Nations Educational, Scientific and Cultural Organization (UNE- SCO) inscribed “Sacred Island of Okinoshima and Associated Sites in the Munakata