🙆

【初心者向け/ITスクール 63日】Pythonの基礎文法一覧

2023/10/17に公開

はじめに

今日は、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などにenumeratefor 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