LoginSignup
0
0

More than 1 year has passed since last update.

Python始めました。(その1)

Last updated at Posted at 2021-10-15

記事を書くきっかけ

 これまではフロントエンドをやっていましたが、バックエンドもできたらかっこいいなと思ってサーバーやデータベースにも手を出し始めました。

 pythonは機械学習やAIのイメージがあったのですが、どうやらバックエンドもできるらしいということで、習得したらお得じゃね?ということでpythonを学び始めました。

 今回は以下の動画教材を用いて勉強しました。
  プログラミング初心者でも安心、Python/Django入門講座

始める前に

 pythonの学習をするにあたってまず、公式からpythonをダウンロードしました。
  https://www.python.org/downloads/

基礎知識

 今回はpythonのinteractiveshellを使って基礎の基礎をやっています。ターミナルに以下のコマンドを打ち込むことで利用できます。終わる時はexit()で終わります。

$ python3.10  //3.10はpythonのバージョン

 ここからは雑ですが、補足があればコマンドにコメントを加える形で説明していきます。

四則演算
>>> 1+1     # 足し算
2
>>> -100+10
-90
>>> 1-1     # 引き算
0
>>> 10-0.1
9.9
>>> 1*10    # 掛け算
10
>>> 10**2   # n乗
100
>>> 10**0
1
>>> 20/4    # 割り算
5.0
>>> 10//3   # 商だけ
3
>>> 10%3    # 余りだけ
1
>>> divmod(10,3)    # (10/3)(商, 余り)を返す
(3, 1) 
type確認
>>> a=1
>>> type(a)
<class 'int'>
>>> a=0.1
>>> type(a)
<class 'float'>

文字列

 ```で囲うことで複数行の文字列を書けます。

複数行文字列
>>> text='''\
... Hello
... Hi
... '''
>>> print(text)
Hello
Hi
文字列
>>> b='hello'
>>> b*10    # 文字列10個羅列できる
'hellohellohellohellohellohellohellohellohellohello'
>>> b+=' everyone'
>>> b
'hello everyone'
>>> b*0
''
>>> len(b)    # 文字列の長さ
14
文字列のメソッド(format)
>>> fmt='私の名前は{}です'
>>> name='太郎'
>>> fmt.format(name)
'私の名前は太郎です'
>>> fmt.format('次郎')
'私の名前は次郎です'

>>> fmt='私の名前は{} {}です'
>>> fmt.format('佐藤','太郎')
'私の名前は佐藤 太郎です'
>>> fmt='{0}{1}{0}'
>>> fmt.format('山田','田中')
'山田田中山田'
>>> fmt='{last}{first}'
>>> fmt.format(last='Sato',first='Taro')
'SatoTaro'

>>> last='佐藤'
>>> first='太郎'
>>> f'{last}{first}'
'佐藤太郎'
文字列のメソッド(split/join)
>>> language='Python,Ruby,PHP,Perl'
>>> language.split(',')    # 文字列を,で分割してリスト化
['Python', 'Ruby', 'PHP', 'Perl']

>>> list=language.split(',')
>>> separator=','
>>> separator.join(list)    # ,つけてリストの要素を結合
'Python,Ruby,PHP,Perl'
>>> ','.join(list)
'Python,Ruby,PHP,Perl'
>>> ' '.join(list)
'Python Ruby PHP Perl'
>>> 
文字列のメソッド(replace)
>>> poem='今日はとても良い天気でした'
>>> poem.replace('今日','昨日')
'昨日はとても良い天気でした'
文字列のメソッド(count)
>>> text='hello,hello,hello'
>>> text.count('hello')
3
文字列のメソッド(startswith/endswith/in)
>>> name='佐藤太郎'

>>> name.startswith('佐藤')
True
>>> name.startswith('田中')
False

>>> name.endswith('太郎')
True
>>> name.endswith('次郎')
False
>>> 

>>> '太郎' in name
True
>>> '次郎' in name
False
文字列のメソッド(find/index)
>>> text='Hello world'

>>> text.find('Hello')    # 一致箇所のindex番号返す
0
>>> text.find('w')
6
>>> text.find('aaa')    # 一致しない時は-1を返す
-1

>>> text.index('Hello')
0
>>> text.index('aaa')    # 一致しない時はエラーを返す
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found
文字列のメソッド(strip)
>>> text='    HelloWorld    '

>>> text.strip()
'HelloWorld'
>>> text.rstrip()    # 右のスペース消す
'    HelloWorld'
>>> text.lstrip()    # 左のスペース消す
'HelloWorld    '
シーケンス型としての文字列操作
>>> text='あいうえお'

>>> text[0]
'あ'
>>> text[1]
'い'
>>> text[4]
'お'
>>> text[-1]
'お'

>>> text[1:4]    # [start:end] start以上end未満
'いうえ'
>>> text[1:]
'いうえお'
>>> text[:4]    # indexは4までだが、endは含まれないので注意
'あいうえ'
>>> text[:5]
'あいうえお'
>>> text[-3:]    # 最後から数えて3つ目からstart
'うえお'

>>> text[::2]    # [start:end:step] 今回は2つ置き
'あうお'
>>> text2=text[1:4]
>>> text2[::2]
'いえ'

>>> text[::-1]    # step-1で逆順に取り出せる
'おえういあ'
>>> 

リスト

 Javascriptで言うところの配列。

リスト
>>> mylist=[1,True,False,'Hello']
>>> type(mylist)
# <class 'list'>

>>> mylist=[]
>>> mylist.append('taro')    # 追加
>>> mylist
['taro']
>>> mylist[0]='hanako'    # リストは書き換え可能
>>> mylist
['hanako']

>>> mylist=[1,2,3,4,5]
>>> mylist[:2]=[-1,-2]
>>> mylist
[-1, -2, 3, 4, 5]
リストの組み込み関数(len/sum/max/min)
>>> numbers=[1,2,3,4,5]
>>> len(numbers)    # 長さ
5
>>> sum(numbers)    # 合計
15
>>> max(numbers)    # 最大
5
>>> min(numbers)    # 最小
1
リストの組み込み関数(insert/extend)
>>> numbers=[1,2,3,4,5]
>>> numbers.insert(1,1.5)    # index1番目に1.5挿入
>>> numbers
[1, 1.5, 2, 3, 4, 5]

>>> num1=[1,2,3]
>>> num2=[4,5,6]
>>> num1.extend(num2)    # リストの結合
>>> num1    # num1が更新される
[1, 2, 3, 4, 5, 6]

>>> num1=[1,2,3]
>>> num2=[4,5,6]
>>> num3=num1+num2    # num1を更新したくない場合は、num3を用意して格納
>>> num3
[1, 2, 3, 4, 5, 6]
リストの組み込み関数(pop/remove)
>>> numbers=[1,2,3,4,5]
>>> numbers.pop(0)    # 削除 削除した要素を返してくれる
1
>>> numbers
[2, 3, 4, 5]
>>> numbers.pop()    # ()で最後の要素削除
5
>>> numbers
[2, 3, 4]
>>> deleted=numbers.pop()
>>> deleted
4

>>> mylist=['a','i','u']
>>> mylist.remove('i')
>>> mylist
['a', 'u']
リストの組み込み関数(index/in)
>>> num=[1,2,3,4]
>>> num.index(3)    # 3はindex何番目?
2

>>> 1 in num
True
>>> 100 in num
False
リストの組み込み関数(count/join)
>>> num=[1,1,1,1,2,3,4,4,5,5,5,6]
>>> num.count(1)
4
>>> num.count(8)
0

>>> parts=['今日は','とても','良い天気']
>>> poem='\n'.join(parts)
>>> print(poem)
今日は
とても
良い天気
>>> 
リストの組み込み関数(sort)
>>> num=[5,3,7,4,8,1,3]
>>> num.sort()    # 昇順の場合
>>> num
[1, 3, 3, 4, 5, 7, 8]
>>> num.sort(reverse=True)    # 降順の場合 (reverse=True)指定
>>> num
[8, 7, 5, 4, 3, 3, 1]

>>> num=[5,3,7,4,8,1,3]
>>> num2=sorted(num)    # numを変更したくない場合
>>> num2
[1, 3, 3, 4, 5, 7, 8]
リストの注意点
>>> list1=[1,2,3]
>>> lists=[list1,list1,list1]
>>> lists
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

>>> list1.append(4)    # list1変更するとlistsの中身も全て変更される
>>> lists
[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]
>>> lists[0].append(5)    # lists[0]を指定したとしてもlistsの中身全て変更される
>>> lists
[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]

>>> lists=[list1.copy(),list1.copy(),list1.copy()]    # copy()することでそれぞれ独立したlistになる
>>> lists[0].append(6)
>>> lists
[[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]

>>> lists=[list1[:],list1[:]]    # list1を[start:end](すべての範囲)でsliceするパターン
>>> lists
[[1, 2, 3, 4], [1, 2, 3, 4]]

タプル

タプル
>>> mytuple=()
>>> mytuple=tuple()    # タプル型指定する場合
>>> type(mytuple)
# <class 'tuple'>

>>> mytuple=(1,True,False,'Hello')
>>> mytuple=1,True,False,'Hello'    # 要素の羅列でもタプル型になる
>>> mytuple
(1, True, False, 'Hello')

>>> onetuple='Python',    # タプルの要素が1つの時は最後に,をつける
>>> type(onetuple)
# <class 'tuple'>
>>> onetuple='Python'    # つけ忘れると文字列になるので注意
>>> type(onetuple)
# <class 'str'>

>>> mytuple='Python','PHP','Ruby','Perl'
>>> mytuple[0]
'Python'
>>> mytuple[1:]
('PHP', 'Ruby', 'Perl')
>>> mytuple[0]='C'    # タプルは要素の変更不可
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

list -> let
tuple -> const
みたいな感覚。

辞書

 Javascriptで言うところのオブジェクト。

辞書
>>> score={'math':80,'science':50}
>>> type(score)
# <class 'dict'>

>>> score={}
>>> score=dict()
>>> score['math']=80    # score['key名']=value
>>> score
{'math': 80}
>>> score['math']
80
辞書の組み込み関数(get)
>>> score={}
>>> science=score.get('science','no data')    # key=scienceのvalueを格納。無ければno data格納
>>> science
'no data'
>>> score['science']=80
>>> science=score.get('science','no data')
>>> science
80

>>> math=score.get('math')
>>> print(math)    # 無いものはNone
None
辞書の組み込み関数(update/pop/in/len/setdefault/keys()/values()/items())
>>> member={'guitar':'Sato','base':'Kato'}
>>> new={'drum':'Ito','vocal':'Eto'}
>>> member.update(new)
>>> member
{'guitar': 'Sato', 'base': 'Kato', 'drum': 'Ito', 'vocal': 'Eto'}

>>> new={'guitar':'Kudo'}
>>> member.update(new)    # すでにキーがある場合、valueが更新される
>>> member
{'guitar': 'Kudo', 'base': 'Kato', 'drum': 'Ito', 'vocal': 'Eto'}

>>> deleted=member.pop('base')    # 削除するkeyのvalueを格納
>>> deleted
'Kato'
>>> member
{'guitar': 'Kudo', 'drum': 'Ito', 'vocal': 'Eto'}

>>> 'drum' in member    # key名ある場合はTrue
True
>>> 'Kudo' in member    # valueを指定するとFalseになる
False

>>> len(member)
3

>>> guitar=member.setdefault('guitar','Endo')
>>> guitar    # key名ある場合はそのvalue持ってくる
'Kudo'
>>> base=member.setdefault('base','Endo')
>>> base    # キー名無い場合は第二引数をvalueとする
'Endo'
>>> member
{'guitar': 'Kudo', 'drum': 'Ito', 'vocal': 'Eto', 'base': 'Endo'}

>>> member.keys()    # memberにある要素のkey名持ってくる
dict_keys(['guitar', 'drum', 'vocal', 'base'])
>>> member.values()    # memberにある要素のvalue持ってくる
dict_values(['Kudo', 'Ito', 'Eto', 'Endo'])
>>> member.items()    # memberにある要素のkey名とvalue持ってくる
dict_items([('guitar', 'Kudo'), ('drum', 'Ito'), ('vocal', 'Eto'), ('base', 'Endo')])

セット

セット
>>> myset={1,2,3}
>>> type(myset)
# <class 'set'>

>>> myset=set()    # 空のset作る場合は必ずset()
>>> mylist=[1,2,3]
>>> myset=set(mylist)
>>> myset
{1, 2, 3}

>>> mylist=[1,1,1,1,2,2,2,3,3,4,5,6]
>>> myset=set(mylist)    # 同じ値は1つにされる
>>> myset
{1, 2, 3, 4, 5, 6}

>>> myset={1,2,3}
>>> myset.add(4)
>>> myset
{1, 2, 3, 4}
>>> myset.remove(1)
>>> myset
{2, 3, 4}
>>> 2 in myset
True
>>> len(myset)
3

集合

>>> mutable={'list','dict','set'}
>>> imutable={'str','number','tuple'}
>>> seq={'list','tuple','str'}

>>> mutable&seq    # 積集合(mutable/seqどちらにも属する)
{'list'}
>>> mutable.intersection(seq)    # 積集合(intersection) パターン2
{'list'}


>>> mutable | seq    # 和集合(mutable/seqどちらか一方に属する(どちらにも属するものも含む))
{'str', 'list', 'tuple', 'dict', 'set'}
>>> mutable.union(seq)    # 和集合(union) パターン2
{'str', 'list', 'tuple', 'dict', 'set'}


>>> mutable ^ seq    # 排他的論理和集合(mutable/seqどちらか一方にのみ属する(どちらにも属するものは含まない))
{'str', 'dict', 'tuple', 'set'}
>>> mutable.symmetric_difference(seq)    # 排他的論理和集合(symmetric_difference) パターン2
{'str', 'dict', 'tuple', 'set'}


>>> imutable - seq    # 差集合(imutableだがseqに属さない)
{'number'}
>>> imutable.difference(seq)    # 差集合(difference) パターン2
{'number'}

まとめ

 Javascriptと似てるような似てないような...という感じでした。笑
 その2では.pyファイルでコードを書いたif文や、ファイルの読み書きなどについてまとめようと思います。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0