[Python] 基礎-1 データ入出力, 演算, if文, whileループ, forループ

1.入出力

 コマンド 説明 例
input()標準デバイス(コンソール)からの入力string = input(“Enter string…..”)
print()標準デバイス(コンソール)への出力print(string)

実行例

「入出力の実行例」のブロックは、”Markdown”として入力。解説など。
“string=input(“Enter…”などのpythonのコードは、”Code”として入力。上の▶をクリックすると実行される。

入力待ちになる・・・入力すると・・・
入力した文字列がそのまま出力される。

2.データ型,演算,変数宣言

2.1 データ型

データ型記号
整数int-1, 0, 1, 2, 100
浮動小数点float-1.25, -1.0, 1.38, 3.14,
文字列str“a”, “Hello”, “2020/1/1”
他にもたくさんの型がある。例えば、ブール型=True/False,値がない=None

変数の型宣言は不要・・・代入した値に応じて決まる。
演算の結果などで、データ型が変わるときには、変換する。

2.2 演算

優先演算子説明
1**累乗3**4=81
2*乗算,文字列の繰り返し3*4=12, “Hi! “*3=”Hi! Hi! Hi!”
2/除算3/4=0.75
2//整数除算4/3=1
2%剰余4%3=1
6+加算,文字列の連結4+3=7,
“Hi!”+”How are you?”=”HiHow are you?”
6減算4-3=1
累積加算 ”+=”: i +=1 ・・・i=i+1

2.3 Jupyter Notebookでの実行例

3.If文

if 条件 :
条件が成立したときに実行する命令
else:
条件が成立しなかったときに実行する命令

・if文、else文(省略可)、elif文(後述)は,コロン”:”で終わる
・条件が成立/不成立のときに実行する命令は複数でもよく、字下げで区別する
・条件の書き方は、下の演算子を使う

 演算子  意味
== 等しい
!= 等しくない
< より小さい
> より大きい
<= 以下
>= 以上
is None Null(空)データかどうかの判定  

複数の演算子を使うこともOK
 例: ” if 3<= x < 10: “

if文の実行例(単純なif文)

“>=”で、型の違うデータを比較しているというエラー

入力されたデータは、一律、文字列型になるらしい。データ型を整数型に変換する。

データ型の変換

  関数   説明
int() 整数型に変換 
float() 浮動小数点型に変換
str() 文字列型に変換

if文の実行例(if/else文)

入力しないでEnterすると、in_strは””になって条件が成立し、”Please!….”が出力され、[10]
何か文字を入力すると、入力された文字列が出力される。[11]

if文の実行例(if/elif…elif)

入力される年齢(age)によって、グループ分けするような処理。

4.whileループ,forループ

while 条件:
条件が成立している間、繰り返し実行される命令
whileループが終了した後、実行される命令

・「条件が成立している間、繰り返し実行される命令」(複数でもよい)と
 「whileループが終了した後、実行される命令」とは字下げで区別する。
・強制的にループから抜ける命令=break
・強制的にループの先頭に戻る命令=continue
・無限ループの強制終了=Ctrl+C / [Shell]→[Restart Shell]

whileループの実行例

for i range(n):
条件が成立している間、繰り返し実行される命令
whileループが終了した後、実行される命令

・range関数により i = 0~n-1 まで繰り返し実行
・「条件が成立している間、繰り返し実行される命令」(複数でもよい)と
 「forループが終了した後、実行される命令」とは字下げで区別する。
・強制的にループから抜ける命令=break
・強制的にループの先頭に戻る命令=continue

range関数:range([開始値, ]終了値+1[, 増分])
・開始値と増分は省略可

forループ実行例

“range(5)なので0から4まで
上のwhileループと同じ動作をさせたいときは、開始値=1と、終了値+1 = 6 を指定
増分 = 2 を指定すると、終了値を超えるまで繰り返す

 

[関数] 筆頭出願人を抽出(FIND, IF, ISERROR, LEFT)

共同出願の特許文献には、出願人欄に複数の出願人名が入力されている。そのような場合に、先頭の出願人のみに注目して分析を進めたい場合がある。例えば、出願人(会社)ごとの出願件数を集計したい場合、その会社(出願人)単独の出願と共同出願とが別人として扱われるとうまく集計できない。

単独出願と共同出願が混在するので場合分けが必要で、EXCELでは関数で処理するのは少々面倒。しかし、複数の関数を使った数式の作り方の例になるのでご紹介する。

FIND関数
G30セルが「ツィンファ ユニバーシティ」と「鴻海精密工業股▲ふん▼有限公司」の共同出願で、2社が半角コンマ「,」で区切られている。(区切り記号としてセミコロン「;」が使われているデータもある。)
FIND関数は、この区切り記号である半角コンマ「,」が何文字目にあるのかを出力する(図1)。

図1 FIND関数

LEFT関数
複数の出願人名が記載されているセルから、区切り記号である半角コンマ「,」よりも前に部分だけを抜き出す。LEFT関数は、参照先の文字列の先頭から指定された文字数だけを抜き出して出力する。
参照先は出願人であるF30セル、文字数はFIND関数で求めた区切り記号「,」の位置(FIND(“,”,F30)よりも1文字前までである。
① P30セルにおいて、既に入力した「FIND(“,”,F30)」の直前にカーソルを移動する。
② 「LEFT(」を入力して、参照する「文字列」に「F30」を入力する。
③ 半角コンマ「,」を入力して「文字数」の入力に移る。
④ 「FIND(“,”,F30)」の後ろに「-1」を入力する(図2)。

図2 FIND関数とLEFT関数の組み合わせ

他の行にコピーするとエラーになる(図3)。

図3 他の行(単独出願)にコピーするとエラーになる

FIND関数は、探す対象の文字列の中に目的の文字(文字列)が見つからないと、上のように「#VALUE!」というエラーを出力する。

そこでエラーになったら、つまり出願人欄(F列)に区切り記号「,」が見つからなければ、(単独出願だと判断して)、出願人欄(F列)をそのまま出力する。

IF関数とISERROR関数
IF関数 IF(条件,[真の場合],[偽の場合]) 条件を判断した結果、「真」なら「真の場合」、「偽」なら「偽の場合」に指定された結果を出力する。なお、カギ括弧「[・・・]」の引数は省略してもよい。
ISERROR関数 ISERROR(数式) 数式を実行した結果、エラーなら「真」、エラーでなければ「偽」を出力する。上のIF関数の「条件」部分に使う。

図4 エラーになるかどうかで場合わけする

「=IF(ISERROR(FIND(“,”,F31)),F31,LEFT(F31,FIND(“,”,F31)-1))」
IF関数の「条件」にはFIND関数(FIND(“,”,F31))がエラーになる(F31に区切り文字「,」が含まれない)かどうかを調べるISERROR関数「真の場合」(エラーになる場合)はF31セルの値をそのまま出力「偽の場合」(エラーにならない場合:F31に区切り文字「,」が含まれている場合)は区切り文字の前までを抜き出すLEFT関数の結果を出力する。

P31セルをすべての行にコピーする。このとき共同出願の行(30行、40行)にも同じようにコピーする。共同出願の場合は筆頭出願人だけが抽出される(図5)。

《サンプル》
http://lib.aq-patent.com/wp-content/uploads/2020/05/func_primaryApplicant.xlsx