ばぁど・うぉっちんぐ

セキュリティに強いWeb屋。自由と春を求めて羽ばたく渡り鳥。

このブログはGoogle Analyticsを利用しています

【7日目】Python勉強メモ -オブジェクトとクラス-

本日はクラスについてです。

オブジェクト指向は深くまで触りません。

前回はこちら ultrabirdtech.hatenablog.com

オブジェクトとは

Pythonは全てがオブジェクトである。

数値で定義した7や、文字列として定義したstringなどもオブジェクトになる。

オブジェクトにはデータ(変数や属性)とコード(関数、メソッド)が含まれている。

オブジェクトは具体的なものの一意なインスタンス(実態、実例)を表現している。

例えば、int型やfloat型などは抽象化されたクラスである。

この抽象化されたクラスを元に、より具体化されたインスタンスである78が生成される。

78は整数オブジェクトを元に生成されているため、整数オブジェクトが持つ変数やメソッドを使うことができる。

クラスとは

クラスとはインスタンスを生成元の型である。

定義方法

classキーワードを用いる。class予約語である、このキーワードを用いることでクラスを定義することができる。

class Person():
      pass

someone = Person()

初期化メソッド

__init__は初期化メソッド。 Person()インスタンスが生成された時に呼び出されるメソッドである。 インスタンス生成時に必要な処理などはこの__init__に記述する。

class Person():
    def __init__(self):
        print('initialize!!!')

========実行結果===========
>>> someone = Person()
initialize!!!

内部のデータへアクセスする

生成インスタンスの内部データにアクセスするには生成したインスタンス.データ名でアクセスすることが可能。 メソッドも同様に生成したインスタンス.メソッド名()で使用可能。

クラス内部で自身に設定された要素を操作する場合はselfを使用する。

class Person():
   def __init__(self, name):
       self.name = name

   def introduction(self):
       print("My name is '" + self.name + "'") # クラス内部で触る場合はselfが必要


========実行結果===========
>>> someone = Person('steeve')
>>> someone.name  # 内部のデータの参照
steeve

>>> someone.introduction()  # 内部のメソッドの実行
My name is 'steeve'

クラスの継承

クラスには継承という概念がある。

これは親クラス、子クラスを定義し継承を行うことで子クラスから親クラスの変数やメソッドを利用することができるという仕組みだ。

なぜ、このような仕組みが必要かというとプログラミングを実物のものとして捉えて実装していると似たようなロジックが必要なクラスを書かなければいけない場合がある。

例えば、会員登録式のWebサイト。

会員登録式のWebサイトであれば有料メンバーと無料メンバーがいるはず。 課金状況でシステムの利用範囲は異なるはず。

そういった場合は、memberクラスというものを定義し、それを派生させ有料メンバークラスと無料メンバークラスを作成する。このような継承を用いることで、記述するソースコードの量を少なくし、保守性を上げることができる。

この継承を行う際に必要なことは、親クラス、子クラスの関係がis-a関係であるということである。

# 会員クラス
class Member():
    def __init__(self, name, status):
       self.name = name
       self.status = status

    def introduction(self):
       print('[Name]:' + self.name)
       print('[Status]:' + self.status)

# 有料会員クラス
class PaidMember(Member):
    def __init__(self, name):
        self.status = 'Paid'  # status を 'Paid' と設定している
        super().__init__(name, self.status)

# 無料会員クラス
class FreeMember(Member):
    def __init__(self, name):
        self.status = 'Free'  # status を 'Free' と設定している
        super().__init__(name, self.status)

================================
>>> yamada = PaidMember('Yamada')
>>> yamada.introduction()
[Name]:Yamada
[Status]:Paid

>>> suzuki = FreeMember('Suzuki')
>>> suzuki.introduction()
[Name]:Suzuki
[Status]:Free

ソースコード解説

会員クラス

上記のソースコードを解説すると、Memberクラスでは初期化メソッドと自己紹介メソッド(introduction())を持っている。 Memberクラスが持っている要素は会員メンバーの名前(name)と自分自身が有料会員(Paid)か無料会員(Free)かを表すステータス(status)だ。

__init__()の初期化メソッド内では、初期化する際に必要な情報を要素に代入している。今回の例では初期化する段階で名前(name)とステータス(status)を設定している。

introduction()では自分自身に設定されている要素を表示している。

有料会員クラスと無料会員クラス

有料会員クラス(PaidMember)と無料会員クラス(FreeMember)は会員クラス(Member)を継承して作られている。

有料会員は会員であり、無料会員も会員である。 継承の絶対条件であるis-a関係は守られていることがわかるだろう。

各会員クラス共に初期化メソッドが存在しメソッドをオーバーライドしている。 オーバーライドした初期化メソッドの中では自分自身のstatusを設定したあとsuper()を用いて親クラスのメソッドに作業を移譲している。

Let's Try

課題1. メンバークラスに必要そうなメソッドを考えて実装してみてください

課題2. 有料メンバー、無料メンバー以外のメンバーを考えて実装してみてください

課題3. クラスで表現するのに適している事例を挙げて、実際にプログラミングで表現してみてください

まとめ

オブジェクト指向難しすぎる泣

次回はこちら ultrabirdtech.hatenablog.com

【6日目】Python勉強メモ -モジュールのimport-

GW特別企画6日目。

10連休も半分終わってしまい悲しいお気持ち。

前回はこちら

ultrabirdtech.hatenablog.com

今回はモジュールのimport

Pythonのコア部分は最小の構成で構築されているので、プログラミングに必要な機能があれば適時importする必要がある。

モジュールとは、Pythonコードをまとめたファイルのこと。 モジュールをimportすることで、モジュール内のコード、変数などをプログラムで使用することができる。

モジュールのimport

基本構文

import [module名]

Pythonファイルの.pyを取り除いたもの。

randomモジュールをimportする場合

import random

fruits = ['apple', 'orange', 'strawberry']
print(random.choice(fruits))

部分的にimportをする

モジュールを全体的にimportするのではなく部分的に必要な場合、部分的にimportすることも可能。

from random import choice

fruits = ['apple', 'orange', 'strawberry']
print(choice(fruits))

別名でimportすることも可能

asを利用することで、別名でimportすることも可能

from random import choice as select # choice()をselect()としてimportしている

fruits = ['apple', 'orange', 'strawberry']
print(select(fruits))

時と場合に応じて使い分ける。

コマンドライン引数を受け取る(sys)

コマンドライン引数とは、pythonファイルを実行する際に入力値として与える引数のこと。 Pythonではsysモジュールをimportすることで実現可能。 sys.argvとアクセスすると、コマンドライン引数で渡した値にアクセス可能。

0要素目には実行中のファイル名が入る。 1要素目以降は、引数に渡されたものが入る。

下記のようなprint_argv.pyを作成する。

import sys

print(ファイル名:=>sys.argv[0])
print(引数1=====>sys.argv[1])

下記のコマンドで実行してみる。

$ python print_argv.py 'test '
ファイル名=>print_argv.py
第1引数====>test

引数として与えたtestという文字列がプログラム上に引き渡されたことがわかる。

Let's Try

電卓プログラムを作る

今まで学んだことの総合課題。

コマンドライン引数として与えられた数値1、数値2を、オペレータにより計算をするようなcalculator.pyファイルを作る。

仕様

  • 与えられたコマンド引数に従って数値を計算する電卓プログラムを作成してください
  • コマンドライン引数で下記を与えられること

    • 第1引数: 数値1
    • 第2引数: 数値2
    • 第3引数: オペレータ(+-*/)
  • エラー処理を行うこと

    • 第1引数、第2引数に数値以外(文字列hogeなど)が割り当てられた時エラー文を表示すること
    • 第3引数に+, -, *, / 以外のものが与えられた場合エラー文を表示すること
    • 数値2に0が与えられ、除算が行われた時、エラー文を表示すること
    • 引数が足りない場合エラー文を表示すること

出力例

期待する出力

# 足し算
$python calculator.py 2 3 +
5

# 引き算
$ python calculator.py 90 8 -
82

# 乗算
$ python calculator.py 6 7 '*'
42

# 除算
$ python calculator.py 6 2 /
3.0

エラー表示の出力

引数2に数値以外の値(hoge)を与えた場合

$ python calculator.py 6 hoge +
[ERROR]: 計算する値は数値を入力してください。

ゼロ除算を行なった場合

$ python calculator.py 5 0 /
[ERROR]: 割り算を行う際に0徐算が発生しました。第2引数を1以上の数値にしてください。

まとめ

次回はこちら

ultrabirdtech.hatenablog.com

【5日目】Python勉強メモ-関数・例外処理-

Python勉強メモも5日目。

ついに平成が終わり令和になってしまいましたね。

PCの予測変換で令和が一発で出るようになっており、少々驚いている自分がおります。

というわけで、令和一発目の記事としてGW企画のPython勉強メモです。

前回はこちら

ultrabirdtech.hatenablog.com

関数

4日目までの勉強した内容は、コードを何かでまとめるということをやっていなかった。 プログラムをしていると、コードを再利用したい場面に何度も出会う。 その再利用を行うための手法として一つあるものが、この関数である。

関数は名前をつけることができるコードの塊のことで、メインの処理と切り分けて書くことができる。 関数は任意のデータ型、任意の個数の入力(引数)を取り、任意のデータ型、数の結果を出力する。

関数の定義

defキーワードを用いる。

def hoge():
     print('hoge')

defキーワードの後に関数名、入力引数を書き込む()、最後に:を書くことで関数の定義を行うことができる。 関数名は、変数名と同じ規則になる。

関数の呼び出し

関数名に()をつけることで呼び出すことが可能。

>>> hoge()
'hoge'

返り値の設定

関数に呼び出し元に値を返す場合はreturnを用いる。

文字列mogeを返却する関数moge()があるとする。

def moge():
    return 'moge'

実行すると下記のようになる。

>>> m = moge()     # moge()の返り値がmに代入される
>>> m
'moge'

引数

関数を呼び出すときに引数として値を渡すことができる。引数を渡すことで渡した引数によって関数内での処理を変えることなどが可能。

渡した引数age(年齢)で、20歳未満かどうかを確認する関数。

def check_age(age):
    if age <= 20:
        print('OK')
    else:
        print('NG')

このように関数としてまとめることによって、複数回年齢を確認する必要があった場合はこの関数を呼び出してあげるだけでいい(そもそも年齢を何回もチェックするプログラムとは?とかいう話はなし。)

例外処理(try, except)

例外とは

プログラムをしていると、例外を予知し、例外を適切に処理をしてあげる必要があるタイミングがある。 例外とは、プログラムを実行している際に起きうるエラーのことだ。

例えば、0による除算やPythonだと存在しないはずの配列要素へのアクセスだ。

例1. ゼロ除算

>>> 1 / 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

例2. 存在しない要素へのアクセス

>>> fruits = ['orange', 'apple', 'strawberry']
>>> fruits[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> 

例外を正しく処理してみる

上記のゼロ除算の場合、0で割るという場合を想定してプログラムをしてあげる必要がある。

例外を何も処理していなければ、システムエラーとなりプログラム自体が止まってしまうからだ。

例外を処理するためにはPythonではtryexceptを使用する。

>>> try:
>>>      1 / 0
>>> except ZeroDivisionError as error:
>>>     # エラーが発生した際の処理
>>>     print('エラーが起こったよ!!エラーは :' + str(error))
 
エラーが起こったよ!!エラーは :division by zero

このようにエラーが起こりうるソースコードtryexcept で囲った上でエラーが発生した際の処理を記述する。 今回であればエラーを通知するだけだが、エラーメッセージとして利用者に対して正しい数字(0以外の数字)を記入させるようなメッセージを表示させるなどが正しい処理だろう。

Let's Try

1. 関数で切り出すと、どのようなメリットがあるかを考えてみる

ユニットテストを関数ごとに書きやすくなる

・機能単位で関数に切り出すことで可読性を高めることができる

2. エラーにはどういう種類のエラーがあるかを調べてみる

docs.python.org

まとめ

例外処理理解できないうちは難しいですよね。

次回はこちら

ultrabirdtech.hatenablog.com

【4日目】Python勉強メモ -制御構文-

GW企画。 ついに平成も最後の日ですね。

前回はこちら。 ultrabirdtech.hatenablog.com

今回は制御構文。

プログラムを扱うにおいて、本当に面白くなるのはここから。 2日目、3日目はデータ型についてまとめましたが、制御構文になるとやっとプログラミングっぽいことできますね。

条件分岐(if, elif, else)

if, elif,elseは与えられた条件に対してTrue(真)かFalse(偽)かをチェックするPythonの構文。

意味 演算子
等しい ==
等しくない !=
より小さい <
以下 <=
より大きい >
以上 >=
要素に存在する in

例1:お酒を飲んでいい年齢かを判断するプログラム

お酒は20歳からなので、与えられた年齢(age)が20かどうかを判断するプログラムになる。

if 20 <= age:
    print('OK')
else:
    print('NG')

また、複数の条件をand, orなどを利用して、同時に比較することができる。

x < 5 and x < 10       # 6 から 9までの数字ならTrue

繰り返し構文(for, while)

プログラムをしていると、同じ処理を複数回行いたいときがある。 その際はfor文や、while文を利用することになる。

for文

リストやハッシュの要素を一つずつ取り出して処理をする。

>>> fruits = ['apple', 'orange', 'strawberry', 'grape']
>>> for f in frutis:
>>>     print(f)

===出力結果===
apple
orange
strawberry
grape

while文

要素がTrueである間ループし続ける。

count = 1
while count <= 5:
    print(count)
    count += 1

break文、continue文

繰り返しの中で条件分岐を行い、条件によって処理を抜けたい場合や処理を途中でやめて次のイテレーションに処理を移りたい場合がある。 それらを実現してくれるのがbreak文とcontinue文。

count = 1
while True:
    # count の値が100以上になったら処理を抜ける    
    if count > 100
        break;

    count +=1

Try

1. フィボナッチ数列を出力するPythonファイルを作成してください

フィボナッチ数列とは

ja.wikipedia.org

実行結果

$ python fibonacci.py 
0
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765

2. fizzbuzzを出力するファイルを作成してください

100までの数値の中で、3で割り切れる場合はfizz、5で割り切れる場合はbuzz、両方で割り切れる場合はfizzbuzzと出力するプログラムを作成してください。

実行結果

$ python fizzbuzz.py 
3:fizz
5:buzz
6:fizz
9:fizz
10:buzz
12:fizz
15:fizzbuzz
18:fizz
・
・
・
96:fizz
99:fizz

3. zundokoを出力するファイルを作成してください。

ズンドコをランダムに出力し、出力がズンズンズンズンドコになったら、KIYOSHIと出力するプログラム

実行結果

$ python zundoko.py 
ズン
ズン
ズン
ドコ
ズン
ズン
ズン
ズン
ドコ
ズンズンズンズンドコ
KI・YO・SHI

※ズンとドコの表示回数は実行する度にランダム。

まとめ

Pythonにはswitchとかcaseに当たる制御構文がないのには驚いた。

次回はこちら

ultrabirdtech.hatenablog.com

【3日目】Python勉強メモ - リスト、辞書 -

GW企画3日目。

2日目はこちら ultrabirdtech.hatenablog.com

リストを理解する

リストとはデータの構造体のこと。 文字列や数値をデータ構造の一つとして格納し管理することができる。 リストに格納するデータ型は、様々なものが混在していてもよい。

リストは要素を順番に管理したいときに向いている。 リストには要素を追加したり、削除したりするメソッドが存在している。

リストの生成

>>> sample_list = []
>>> empty_list = list # list でも定義可能
<class 'list'>   
>>> fruits = [‘apple’, ‘orange’, ‘strawberry’]   # 生成と同時に要素も定義

リストへの追加

>>> fruits.append('grape')
 ['apple', 'orange', 'strawberry', 'grape']

リストからの削除

>>> del fruits[0]   # 0要素目の apple が削除される
 ['orange', 'strawberry', 'grape']

リスト要素の参照

>>> fruits[-1]       # -1要素目の group が表示される
'group'

辞書

リストに似ているが、リストとは違い要素の順番は管理されておらず、格納されている値に対して一意のキーを与える。 キーは文字列が与えられることが多いが、他のデータ型でも可能。

辞書の生成

>>> dictionary = {}
{}

キー、バリューの追加

>>> dictionary['key'] = 'value'
{'key': 'value'}

キーに紐づくものの編集

>>> dictionary['key'] = 'other value'
{'key': 'other value'}

キーに紐づくものの削除

>>> del dictionary['key']
{}

タプルと集合について

リスト、辞書共にミュータブル(変更可能)なもの。 タプルと集合はそれぞれ、イミュータブル(変更不可)なリスト、辞書のことになる。

リストに関してはプログラム中で変更する予定がない場合は積極的に使っていきたいですね。

集合も数学Aで習った集合を扱うことができるので、必要に応じて使いたい。割と二つの配列で共通の要素を抽出したいケースは割とある。

Let’s Try

1. リストに存在する操作メソッドを調査(最低5個)

docs.python.org

docs.python.org

2. 辞書に存在する操作メソッドを調査(最低5個)

docs.python.org

まとめ

リスト、辞書はデータ構造として必須なので便利メソッド覚えて、わかりやすいプログラムを目指していきたい。

次回はこちら

ultrabirdtech.hatenablog.com

【2日目】Python勉強メモ -データ型-

GW企画2日目。

前回はこちら。 ultrabirdtech.hatenablog.com

対話型インタプリンタとかデータ型周りのことについてです。

Pythonに触れてみる

ターミナル上で「Python」と打ち込むと、対話型インタプリンタが立ち上がります。

$ python
Python 3.7.2 (default, Jan 12 2019, 17:34:03) 
[Clang 10.0.0 (clang-1000.11.45.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'

Pythonのコマンドを調べて実際に入力できます。 止める場合は exit() と打つと通常のコマンドプロンプトに戻ることができます。

Let’s Try

1. 5 + 5 * 5 の結果を確認する

>>> 5 + 5 * 5
30

算術演算子には優先順位が存在する。乗算や除算が優先される。

2. 文字列'a'を10000個出力してみる

>>> 'a' * 10000
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaa
・
・
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
>>>

文字列にもなどのメソッドが存在する。を利用すると、数値分文字列が表示される。

データ型を理解する

Python はすべてオブジェクトとして実装されています。 オブジェクトにはデータ型というものが存在しており、ブール値、数値、文字列などが存在する。

数値

算術演算子

演算子 意味 結果
+ 加算 3 + 2 5
- 減算 5 - 3 2
* 乗算 10 * 7 70
/ 浮動小数点の除算 7 / 2 3.5
// 徐算(切り捨て) 7 // 2 3
% 剰余 7 % 2 1

整数

5 や 100などのリテラルは整数として扱われる。

>>>  5

# - なども扱える
>>> -100      

# 0 が前につくとエラー(そのような数値はない)
>>> 05
  File "<stdin>", line 1
    05
     ^
SyntaxError: invalid token          

整数へのデータ変換は int() を用いる。

>>> int(9.8)
9

浮動小数

1.0 や 0.02 などのリテラル浮動小数点として扱われる。

浮動小数点への変換は float() を用いる

>>> float(5)
5.0

余剰が出るような 除算を行うと結果は float 型になる

>>> 3/2
1.5
>>> type(3/2)
<class 'float'>

文字列

Python3からはunicodeを採用(すべての表現可能な言語をサポートしている)

文字列の定義

>>> ‘string’    # シングルクォートで文字列を定義できる
>>> “string”  # ダブルクォートでも生成可能

型変換

str() を用いる

>>> str(50)
‘50’

文字列の連結

>>> ‘a’ + ‘b’
‘ab’

ブール値

True と False という二つの値のみが存在する。それぞれTrue(真)、False(偽)を表す。

Falseとして評価されるもの
ブール値 False
null None
ゼロ(整数、浮動小数点共に) 0 , 0.0
空文字列、空配列、空辞書 ‘’, [], {}
空集合 set()

上記の表以外のものはTrueとみなされる

Let’s Try

1. 1 + 1.0 の結果は int() か float() かどちらになるか

>>> type(1 + 1.0)
<class 'float'>

型が大きい方が選択される。

2. True + 1 の結果がどうなるか考えてみましょう

>>> True + 1
2

Trueは1として処理される。

ちなみにFalseは0。上記の表の通り0はFalseとして扱われる。

3. 文字列中に ’ (シングルクォート)、” (ダブルクォート)を使用したい場合どうすれば定義できるか?

エスケープ処理を行うことで使用可能。 エスケープ処理とは、', "の前に\を入れて、直後の文字を文字列として認識させる処理。

>>> 'aaa\'aaa'
"aaa'aaa"

>>> "aaa\"aaa"
'aaa"aaa'

もしくは、文字列中で'を使いたい時は"で宣言する。 または、その反対でも宣言可能。

>>> 'aaa"aaa'
'aaa"aaa'

>>> "aaa'aaa"
"aaa'aaa"

4. 文字列を操作するためのメソッドにはどのようなものがあるか調べてみよう

リファレンス貼っときます。 docs.python.org

変数の概念を理解する

プログラム言語で重要な要素となるものが変数の存在。

変数とは、値を入れておく箱のようなもの。

箱にラベルをつけてプログラム内では値を管理する。

変数への代入

変数に値を設定することを代入という。 代入を行うには = を利用する。

>>> a = 7
>>> print(a)
7

変数名の定義

変数名で利用できる文字は下記

  • 英字(a - z, A - Z)
  • 数字(0 – 9)
  • アンダースコア(_)

また、変数名の最初は数字を使用することができない。

  • 正しい変数名
    • abcde
    • a1
    • a_b_c
    • _abc
  • 間違った変数名
    • 1a
    • 123

予約語

Pythonには予約語というものがある。 Pythonがシステム的に利用しているため変数として利用できない文字列のこと。

False class finally is reutrn
None continue for lamda try
True def from nonlocal while
and del global not with
as elif if or yield
assert else import pass
break except iin raise

まとめ

ここまでは、まだ基礎中の基礎。

Rubyと似ている(Rubyが似ている?)ので、たまにRubyと同じように打ってエラーとなるときがある。

ま、セミコロンがないからエラー率は低いですけどね!!!!(怒)

次回はこちら ultrabirdtech.hatenablog.com

Python勉強メモ -はじめの一歩-

GW始まりました。

驚愕の10連休。

なので、Pythonを基礎から勉強しようと思い記録を残していきます。

勉強方法

下記の本を利用しました。

www.oreilly.co.jp 基礎から学ぶためにやはり入門本は必須ですよね。 ifを用いた条件分岐とか、forを用いた繰り返しとか概念は知っているのですが、やはり新しい言語を基礎から学ぶ必要があると考えています。

www.oreilly.co.jp 昨年の7月くらいから読んでいるのですが、途切れ途切れでまだ読破できていない一冊。 ここ1年でサイバーセキュリティ勉強できたし、Pythonの基礎も勉強したので、このGW中に読み進めたい。

サイト

公式サイトは外せないですね。

www.python.org

Pythonとは

1991年に発表されたインタプリタ式のプログラム言語。

コアとなる部分が最小限に作られており、必要により外部ライブラリをimportすることで、できることを増やしていけます。

ここ数年だと機械学習系のライブラリが豊富であるためにAIなどの方面で非常に人気な言語になりましたね。 スクリプト言語という特性もあり細かな数値を変更しても、コンパイル言語のようにソースコード全体をコンパイルし直す必要がなく、すぐに機械学習の結果を確認することができるため人気が出ているみたいですね。

個人的には文法も非常にシンプルで書きやすいところが好みです。セミコロンはないしね!!! 元々がRuby大好きな人間なので、Rubyと同じようなシンプルさには魅力を感じてしまいます。

あとPythonはインデントが大事だということも特徴の一つですね。

2系 VS 3系

Pythonは2系と3系は全く別物です。

文法上で違いがあり、バージョンを変更しようとなると正常に動かすためには大変な労力がかかります。

※実際に開発合宿で経験あり ultrabirdtech.hatenablog.com

2系

print 'Hello World'

3系

print('Hello World')

print()は文字力の出力をしてくれるのですが、このprint()ですら文法が違います。2系は()が必要ないのですが、3系は()が必要になります。

3系で()を利用しなかった場合エラーが起きますね

>>> print 'Hello World'
  File "<stdin>", line 1
    print 'Hello World'
                      ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print('Hello World')?

まとめ

本日からGW期間中は毎日Pythonの記事を投稿します。 文字列、数値、リスト、辞書、制御構文などなど。 初歩的なことばかりになりますが、よろしくお願いします。

あと、Pythonを勉強するために参考になるサイトなどがあればコメントなどで教えていただけると喜びます。

2日目はこちら ultrabirdtech.hatenablog.com