【初心者向け/ITスクール 63日】Pythonの基礎文法一覧
はじめに
今日は、ITスクールに通った63日目の日で、今日学んだ知識を記事にシェアしたいと思います。本記事が、ITを勉強を始めた方々にもロードマップになればいいと思います。
今日は、現在プログラミング言語でJavaを超えて、1位になっているPythonを勉強しました。
データーなどを扱うことに特化された言語で、今後PythonでParsingする実習をある予定です。
まず、その一歩として、Pythonの基礎文法を学び、少しなれる時間を持ちました。
出力
-- coding: utf-8 --
Python2まではASCIIにエンコーディングされるので、# -*- coding: utf-8 -*-
を作成する必要がありました。
3からはUTF-8がdefaultですが、明示的に作成するのが暗黙的なルールらしいです。
print()
基本
print('W')
print('O')
print('W')
W
O
W
JAVAのprintlnと同じです。
end
print('W', end='')
print('O', end='')
print('W', end='')
WOW
print()のendは基本値がenter(\r\n)なので、printlnのように動作しますが、end=''
で編集することもできます。
Separator
print('a','b','c','d','e')
print('abc123','gmail.com', sep='@')
print('010','1111','1111', sep='-')
a b c d e
abc123@gmail.com
010-1111-1111
`sep=' 'を語尾に付けることで、JAVAのsplit()のようにdelimiterを設定することができます。基本値はspace(空白)です。
format({},{index},{name})
print('{} and {}'.format('1','2'))
print('{1} and {0} and {0}'.format('1','2'))
print('{p1} is {p2}'.format(p1='Life', p2='Egg'))
1 and 2
2 and 1 and 1
Life is Egg
formatを通して、printf、jsの``リテラルのように表現可能です。
print('%d' %123)
print('%.2f' %123.4567)
123
123.46
数字の場合はjavaと異なり、一個なら,が省略されます。
print('{},{}'.format('%d' %10,'%.2f' %11.11111))
print('{0:d},{1:.2f}'.format(10, 11.11111))
10,11.11
10,11.11
このように混ぜることやindexにも:
でformatを指定することが可能です。
入力
input()
input("name":)
javaのScannerと同じ機能になります。入力したデーターはStringがdefaultです。
int(input("number":))
JSのように、データータイプを指定することが可能です。
データータイプ
>Pythonの場合、primitive typeではなく、reference typeでデーターを扱います。 タイプはinputのように指定することもできますが、基本は自動的に選定されます。
int
: 背数型データー
float
: 実数型データー
booloan
: 論理型データー(True,False)で大文字!
a = 10
print(a)
print(type(a))
print(id(a))
20
<class 'int'>
140733083556208
idメソッドの場合、aオブジェクトの参照しているアドレスを意味します。
演算子
単項演算子
Pythonには++,--がありません!
算術演算子
+,-,*,/,%,** 以外にもJavaのように和のみ計算する //
演算子があります。
論理演算子
AND, OR , NOTが存在します。&&, ||,!と同じ役割です。
また、比較演算子の際に (5 <=a <=10) のように条件を二つ作成せずに表現することが可能です。
複合演算子
+=, *=も既存のように使うことが可能です。
三項演算子
true if condition else false
condition and true or false
print("even" if number%2==0 else "odd"
number%2==0 and "even" or "odd"
このように、二つの表現方式があります。
★結合演算★
Java,JSの場合、文字列 + 整数で結合する文字列に結合することができますが、
pythonはできません。
*しかし、演算子で反復することが可能です。
a = a
print(a*5)
aaaaa
Collection
List(順序O,重複O,修正O,削除O)
a = [123,4,56,789,1011]
print(a,type(a))
print(a[0]) // [123]
print(a[0:3]) //[123,4,56]
print(a[0:5:2]) //[123,56,1011]
print(a[-1]) //1011
print(len(a)) //要素の個数
a.append(1213) //一番最後インデックスに追加
a.insert(2,1414) //(index, value) 指定したindexに追加
a[4] = 7788
del a[0]
a.sort() //整列
a.sort(reverse=True) //整列(降順)
★Tuple★(順序O,重複O,修正X,削除X)
()リテラルで表現。()は省略可能
tuple1 = ('1','2','3') #tuple1 = 1,2,3
print(tuple1)
('1', '2', '3')
特手の値が入っているindex、個数は関数から紹介可能です。
t = (1,2,3,4,5,6)
print(t.index(5))
print(t.count(4))
4
1
複数の要素がある場合、firstindexをリターンします。
x, y, z = 10, 20 ,30
x, y, z = z , x , y
print(x,y,z)
30,10,20
参照型なので、アドレスを変更することで、値を交換することが可能です。
Set(順序X,重複X)
{}で表現します。
s = {"1","1","1"}
print(len(s))
1
Dictionary(JSのObject、MAP)
同様、{}で表現し、key:valueでマッピングすることができます。
d = {"name": "a", "age" :12}
print(d["name"])
print(d["age"])
a
12
★Range★(範囲を決められるリスト)
r = range(10) 0~9まで
r = range(1,11) 1~10まで
r = range(1,11,2) 1~10まで、2個ずつ(1,3,5,7,9)
条件文
if-elif-else
if True:
trueの際に実行される文
elif True:
trueの際に実行される文
else
trueがない場合、実行される文
if point > 100 or point < 0 :
print("not score")
elif point>=80:
print("A")
elif point>=70:
print("B")
elif point>=60:
print("C")
else:
print("D")
in, not in
a in b
aがbにあるかをTrue, Falseでリターン(not inはその反対でしょう!)
human = {"name":"john", "age":19, "phone":"010-1111-2222"}
print("name" in human)
print(20 in human.values())
print("height" not in abc)
true
false
true
.values()
はpropertyの値を利胆するメソッドです。
ループ
for in
pythonはJava,JSのように細かい設定をすることはできません。
forEach, for..ofのようにfor内では調節することができないのですが、range()などを活用することで調節することも可能です。
l = [1,2,3]
for num in l:
print(num)
print()
for letter in range(5):
print('a')
1
2
3
a
a
a
a
a
★enumerate★
配列、Collectionなどにenumerateとfor inと組み合わせた場合、tupleをリータンします。
li = ["zero","one","two","three"]
for index,value in enumerate(li):
print(i,v)
0 zero
1 one
2 two
3 three
このようにliのindex,valueをtupleでkeyとvalueのようにリターンすることが分かります。
次は、1位の学生のindex番号と点数を出力する問題です。
score = [10,54,56,70,70,78,65,99,91,88]
maxI,maxS = 0,0
for i,v in enumerate(score):
if maxS < v:
maxS = v
maxI = i
print(maxI, maxS)
7 99
while
while True:
y = int(input("y : "))
if y % 2 ==0:
print("even")
break
javaと形は少し異なりますが、原理は同じです!
Discussion