Pythonに挑戦(12)

Pythonに挑戦(12)

pythonの組み込み関数について説明します。

(1) 入出力関係
(a) input
キーボードからの入力を促す関数です。単に画面上でキーボードの入力待ちになってもどうしてよいかわからないので、プロンプトと言うのですが、何の入力をどのようにするのかを表示させてキー入力待ちにすることができます。

str1 = input(“コマンドを入力してください:“)
とすると、画面に、「コマンドを入力してください:」と表示してキー入力待ちになります。ここで、例えば、“start”とキー入力すると、変数str1に文字列データ“start”が入ります。input関数は文字列を返すので、整数値を得たい場合には、

n1 = int(input(“整数値を入力してください:“))
とします。
(b) print
引数の型に従って画面に引数の内容を出力する関数です。

a = 10
print(a)
とすると、画面に10と表示されます。

a = “Hello!”
print(a)
とすると、画面に“Hello!”と表示されます。

a, b, c = 5, 6, 7
print(a, b, c)
とすると、画面に“5 6 7”と表示されます。複数の変数の内容を出力する場合は、変数をカンマ‘,’でつなぎます。

a = [5, 6, 7]
print(a)
とすると、画面に“[5, 6, 7]”と表示されます。

a = [5, 6, 7]
print(*a)
とすると、リストが展開されて画面に“5 6 7”と表示されます。
print関数で複数のデータを出力するとき、通常は、データを空白で区切って出力するのですが、区切り文字を引数sepで指定することができます。

a, b, c = 5, 6, 7
print(a, b, c, sep=’,’)
とすると、画面に“5,6,7”と表示されます。
print関数の出力では、通常はデータ表示後改行して終わりますが、改行したくなければ、引数endで空文字を指定すると改行しなくなります。

a = “Hello!”
b = “Everybody”
print(a, end=”)
print(b)
とすると、画面に

Hello!Everybody
と表示します。あらかじめ、ファイルを書き込みopenしておき、ファイル・ハンドルを引数fileで指定することにより、ファイルに出力することが可能です。

a = “Hello!”
f = open(“C:\python\sample.txt”, ‘w’)
print(a, file=f)
f.close()
とすると、C:\python\sample.txt”というファイルに“Hello!”と出力されます。
また、
print関数では、formatメソッドや、f-string%記法を使用して、複数の変数の内容を整形して出力することができますが、Pythonに挑戦(11)(3)formatメソッドを参照してください。
(2) ファイル処理
(a) open
open()関数は、
open(path, mode=m1, encoding=e1, newline=n1)
という形で使います。pathには、ファイルのパス名文字列が入ります。
modeは、m1=”r”(これがデフォルトで、modeを省略するとm1=”r”として開きます)では読み込みモードでファイルを開き、m1=”w”では上書きモードでファイルを開き、m1=”x”では新規モードでファイルを開き、mode=”a”では追記書き込みモードでファイルを開きます。
ファイルが存在していないのに、
m1=”r”, “a”としてopenしようとするとエラーになります。m1=”w”の場合は、存在する場合には上書きされ、存在しない場合には新規ファイルとしてopenします。ファイルが存在するのにmode=”x”としてopenしようとするとエラーになります。
encodingは文字コードを指定する文字列です。e1=”utf-8″(これがデフォルトです)e1=”shift_jis”, e1=”euc_jp”などが可能です。
newlineは改行コードを指定します。デフォルトは、newline=NonePythonが改行コードを自動認識します。newline=”(空文字)とするか、newline=’\n’とすると改行コードは元のままです。newline=’\r’とすると改行コードを0DH(CR)として出力します。newline=’\r\n’とすると、改行コードは、ODH(CR)OAH(LF)として出力します。
open()関数の戻り値は、ファイル・オブジェクトです。
f1 = open(“C:\python\testdata.txt”, mode=”r”, encoding=”utf-8″)
というようにして、ファイルを開き、ファイル・オブジェクトをf1に保持します。以後、ファイル・オブジェクトのメソッド(Pythonに挑戦(11)(2)read, wirte, closeメソッドを参照してください)を利用して、ファイルの読み書きをします。

(3) 数学関係
(a) abs
整数値の絶対値を返す関数です。実数値の絶対値を求める関数はfabs()です。
(b) divmod
除算の商と余りをタプルで返す関数です。
j1, j2 = divmod(17, 6)
とすると、j12j25が入ります。
(c) max
イテラブル(リスト)の中で最大の要素を返す関数です。
e1 = [14, 27,23,49,31,19,36]
print(“
最大値は、“, max(e1))
とすると、画面に、最大値は、49と表示します。
(d) min
イテラブル(リスト)の中で最小の要素を返す関数です。
e1 = [14, 27,23,49,31,19,36]
print(“
最小値は、“, min(e1))
とすると、画面に、最小値は、14と表示します。
(e) pow
1引数の第2引数乗を返す関数です。pow(a, b, c)とすると、整数値aの整数値b乗を整数値cで割った余りを返します。
print(“eのπ乗は、“, pow(math.e, math.pi)) (mathモジュールを使っています。mathモジュールについては、Pythonに挑戦(7)(a)mathを参照してください)
print(“2
7乗を11で割った余りは、“, pow(2, 7, 11))
とすると、画面に、
eのπ乗は、23.140692632779263
2
7乗を11で割った余りは、7
と表示します。
(f) round
1引数を第2引数で指定した小数桁数に丸めた結果を返す関数です。

x1 = 3.1415926583
print(x1, “
を整数に丸めると“, round(x1))
print(x1, “
を小数第2位までに丸めると“, round(x1,2))
print(x1, “
を小数第6位までに丸めると“, round(x1,6))
とすると、画面に、

3.1415926583 を整数に丸めると、 3
3.1415926583
を小数第2位までに丸めると、 3.14
3.1415926583
を小数第6位までに丸めると、 3.141593
と表示します。
(g) sum
イテラブル(リスト)の要素の合計を返す関数です。

e1 = [14, 27, 23, 49, 31, 19, 36]
print(e1, “
の合計は“, sum(e1))
とすると、画面に、

[14, 27, 23, 49, 31, 19, 36]の合計は 199
と表示します。
(4) オブジェクト生成関連
(a) ascii
文字列を引数に渡すと、アスキー文字(Pythonに挑戦(6)を参照)はそのままですが非アスキー文字は、エスケープ・シーケンスを発生します。

str1 = “a1あい愛
print(str1, “
ascii関数で変換“, ascii(atr1))
とすると、画面に、

a1あい愛 ascii関数で変換 ‘a1\u3042\u3044\u611b’
と表示されます。
(b) bin
引数の整数から2進数文字列を生成する関数です。

j1 , j2, j3 = 1, 109, 255
print(“bin
関数のテスト“, j1, bin(j1), j2, bin(j2), j3, bin(j3))
とすると、画面に、

bin関数のテスト 1 0b1 109 0b1101101 255 0b11111111
と表示されます。
(c) bytearray
エンコーディングを指定して文字列、リストからバイト列を生成する関数です。

str1 = “a1あい愛
e1 = bytearray(str1, ‘utf-8’)
print(str1, “
bytearray関数で変換“, e1)
e1 = [1, 109, 255]
e2 = bytearray(e1)
print(e1, e2)
とすると、画面に、

a1あい愛 bytearray関数で変換 bytearray(b’a1\xe3\x81\x82\xe3\x81\x84\xe6\x84\x9b’)
[1, 109, 255] bytearray(b’\x01m\xff’)
と表示されます。
(d) bytes
エンコーディングを指定して文字列からバイト列を生成する関数です。

str1 = “a1あい愛
print(str1, “
bytes関数で変換“, bytes(str1, encoding=’utf-8′))
e1 = [1, 109, 255]
e2 = bytes(e1)
print(e1, e2)
とすると、画面に、

a1あい愛 bytes関数で変換 b’a1\xe3\x81\x82\xe3\x81\x84\xe6\x84\x9b’
[1, 109, 255] b’\x01m\xff’

と表示されます。
(e) chr
unicodeを指定して文字を生成する関数です。

str2 = chr(0x41) + chr(0x31) +chr(0x3042) + chr(0x3044) + chr(0x611b)
print(str2)
とすると、画面に、A1あい愛、と表示されます。
(f) dict
辞書を作る際に、d1 = {‘key1′:’abc’, ‘key2′:’def’ }としても辞書d1を作ることができるのですが、dict関数を利用することもできます。以下のように、キーワード引数としてキーを指定することも、キーと値の組のタプル、またはリストのリストとして指定することも可能です。

d1 = dict(key1=’abc’, key2=’def’)
print(“
辞書d1“, d1)
d2 = dict([(‘key1’, ‘ghi’), (‘key2’, ‘jkl’)])
print(“
辞書d2“, d2)
とすると、画面に、

辞書d1 {‘key1’: ‘abc’, ‘key2’: ‘def”}
辞書d2 {‘key1’: ‘ghi’, ‘key2’: ‘jkl”}
と表示されます。辞書d1と辞書d2を合成して辞書d3を作る場合には、d3 = dict(**d1, **d2)とします。d = {**d1, **d2}とすることもできます。キーの重複に注意してください。
(g) filter
イテラブル・オブジェクトから条件に合うものだけ選び出す関数です。第1引数は選び出す処理を行って、TrueFalseを返す関数を指定し、第2引数にイテラブル・オブジェクトを指定します。戻り値がgeneratorオブジェクトとなるため、リストにするには、list関数を利用する必要があります。

def selectval(data1):
return data1 > 75
e1 = [62, 38, 77, 91, 63, 88, 54]
e2 = list(filter(selectval, e1))
print(e1, “
の中で75より大きなもの:“, e2)
とすると、画面に、[62, 38, 77, 91, 63, 88, 54]の中で75よりも大きいもの: [77, 91, 88]と表示されます。
(h) format 
指定様式の文字列を生成する関数です。format関数の第1引数は文字列に変換する対象、第2引数は、書式指定文字列。

j1 = 123
j2 = -123
print(“
左寄せ16桁バイナリ“, format(j1, “<16b"))
print(“
中央16桁バイナリ“, format(j1, “^16b”))
print(“
右寄せ16桁バイナリ“, format(j1, “>16b”))
print(“16
桁整数(負のみマイナス付き)”, format(j1, “16d”))
print(“16
桁整数(負のみマイナス付き)”, format(j2, “16d”))
print(“16
桁整数+付き“, format(j1, “+16d”))
print(“16
桁整数+付き“, format(j2, “+16d”))
j3 = 12345678
print(“16
桁整数“, format(j3, “16d”))
print(“16
桁整数(0埋め)”, format(j3, “016d”))
print(“16
桁整数(右寄せカンマ付き)”, format(j3, “>16,”))
print(“16
桁整数(指数表示)”, format(j3, “16e”))
g1 = 123.45678
print(“
実数表示“, format(g1, “16f”))
print(“
小数点以下2桁実数表示“, format(g1, “.2f”))
print(“
右詰小数点以下2桁実数表示“, format(g1, “>16.2f”))
print(“
右詰小数点以下2桁指数表示“, format(g1, “>16.2e”))
str1 = “
いろはにほへと
str2 = “abc”
str3 = “
ちりぬるを
str4 = “defghij”
print(“
左寄せ8桁文字列“, format(str1, “ <8s"), "“, format(str2, ” <8s"))
print(“
左寄せ8桁文字列“, format(str3, “ <8s"), "“, format(str4, ” <8s"))
print(“
中央8桁文字列“, format(str1, “ ^8s”), ““, format(str2, ” ^8s”))
print(“
中央8桁文字列“, format(str3, “ ^8s”), ““, format(str4, ” ^8s”))
print(“
右寄せ8桁文字列“, format(str1, “ >8s”), ““, format(str2, ” >8s”))
print(“
右寄せ8桁文字列“, format(str3, “ >8s”), ““, format(str4, ” >8s”))
print(“
左寄せ8桁文字列(*埋め)”, format(str1, “<8s"), "“, format(str2, “*<8s"))
print(“
左寄せ8桁文字列(*埋め)”, format(str3, “<8s"), "“, format(str4, “*<8s"))
とすると、画面に、

左寄せ16桁バイナリ 1111011
中央16桁バイナリ 1111011
右寄せ16桁バイナリ 1111011
16
桁整数(負のみマイナス付き) 123
16
桁整数(負のみマイナス付き) -123
16
桁整数+付き +123
16
桁整数+付き -123
16
桁整数 12345678
16
桁整数(0埋め) 0000000012345678
16
桁整数(右寄せカンマ付き) 12,345,678
16
桁整数(指数表示) 1.234568e+07
実数表示 123.456780
小数点以下2桁実数表示 123.46
右詰小数点以下2桁実数表示 123.46
右詰小数点以下2桁指数表示 1.23e+02
左寄せ8桁文字列 いろはにほへと  abc
左寄せ8桁文字列 ちりぬるを    defghij
中央8桁文字列 いろはにほへと  abc
中央8桁文字列  ちりぬるを   defghij
右寄せ8桁文字列  いろはにほへと abc
右寄せ8桁文字列    ちりぬるを defghij
左寄せ8桁文字列(*埋め) いろはにほへと* abc*****
左寄せ8桁文字列(*埋め) ちりぬるを*** defghij*
と表示されます。桁数は全角文字でも半角文字でも文字数で数えます。半角文字を指定桁数に埋めるには半角文字を使い、全角文字を指定桁数に埋めるには全角文字を使います。
なお、文字列の
formatメソッドにも注意してください(Pythonに挑戦(11)(3)formatメソッドを参照)formatメソッドは、位置指定引数を利用して複数データを処理可能です。
(i) frozenset
イテラブルオブジェクトからイミュータブルオブジェクト(Pythonに挑戦(6)その(4)(6)を参照してください)
)
を生成する関数です。
keylist = frozenset([‘key1’, ‘key2’, ‘key3’]
datalist = [1, 2, 3]
d1 = dict(zip(keylist, datalist))
print(“
辞書の表示“, d1)
とすると、keylistは変更不可能で、

辞書の表示 {‘key1’: 1, ‘key2’:2, ‘key3’:3}
と表示されます。
(j) hex
引数の整数から16進数文字列を生成する関数です。
j1 = 42940
print(“hex
関数の結果“, hex(j1))
とすると、画面に、hex関数の結果 0xa7bcと表示されます。
(k) iter
引数のイテラブルからイテレータを生成する関数です(Pythonに挑戦(6)その(4)(7)を参照してください)。イテラブルでnext()関数を使うとエラーになりますが、イテレータでは、next()関数が使えます

array = [‘apple’, ‘orange’, ‘peach’]
a2 = iter(array)
print(next(a2))
print(next(a2))
print(next(a2))
try:
print(next(a2))
except StopIteration:
print(“StopIteration例外が発生しました。“)
とすると、4回目のnext()で次の要素が存在せず、画面に、

apple
orange
peach
StopIteration
例外が発生しました。
と表示されます。なお、上記のプログラムで、a2 = iter(array)を省略して、next(array)とすると、next関数はイテレータに対してしか使えない、というエラーになります。
(l) list
イテラブル・オブジェクトからリストを生成する関数です。引数なしで、単に、e1 = list()とすると、e1は空のリストになります。空のリストを作るだけなら、e1 = []でも簡単です。str1 = “abc”として、e1 = list(str1)とすると、e1[‘a’, ‘b’, ‘c’]1文字ずつのリストになります。range()関数を用いて、e1 = list(range(3))とすると、e1[0, 1, 2, 3]というリストになります。
(m) map
1引数のメソッドを第2引数の配列(イテラブル)に適用した結果をイテレータとして返す関数です。forループで回すことなく、配列の全要素に関数を適用させます。map関数の第1引数の関数がn個の引数をとるのであれば、対応して配列はn個の要素を持ちます。ベクトルのスカラー積、内積の計算などに利用できます。map関数の戻り値はイテレータなので、以下では、list関数でリストに変換しています。

x1 = 0.0
def sc_prod(a):
b=a*x1
return b
def v_prod(a, b):
c = a * b
return c
x1 = float(input(“実数値:“))
v1 = [1.2, 5.3, 4.7]
v2 = list(map(sc_prod, v1))
print(“
スカラー積“, v1, “*”, x1, “=”, v2)
v3 = [6.3, 9.1, -11.4]
v4 = list(map(v_prod, v1, v3))
g1 = round(v4[0]+v4[1]+v4[2], 8)
print(“
内積“, v1, ““, v3, “=”, g1)
として、実数値:に、2.0と答えると、画面に、

スカラー積 [1.2, 5.3, 4.7] * 2.0 = [2.4, 10.6, 9.4]
内積 [1.2, 5.3, 4.7] [6.3, 9.1, -11.4] = 2.21
と表示します。
(n) next
イテレータの次の要素を取り出すのに使います。実際には、next関数では、イテレータの先頭にある要素が取り出され、取り出された要素が削除される、という動作をします。最後にイテレータが空の状態でnext関数を呼び出すと、StopIterationという例外を発生します。

array = [‘apple’, ‘orange’, ‘peach’]
a2 = iter(array)
print(next(a2))
print(next(a2))
print(next(a2))
try:
print(next(a2))
except StopIteration:
print(“StopIteration例外が発生しました。“)
とすると、画面に、

apple
orange
peach
StopIteration
例外が発生しました。
と表示します。

pythonに挑戦(13)に続く


  ブログTOP  TOPページに戻る


各問題の著作権は
出題大学に属します。

©2005-2024
(有)りるらる
苦学楽学塾 随時入会受付中!
理系大学受験ネット塾苦学楽学塾
(ご案内はこちら)ご入会は、
まず、こちらまでメール
お送りください。


【広告】 ここから広告です。ご覧の皆さまのご支援ご理解を賜りたく、よろしくお願いいたします。
【広告】 広告はここまでです。
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする