コンピューターは我々人間とは違うデータの記憶の仕方をします。それをちょろっと説明します。

pythonにはデータ型というのがあります。これが違うとうまく動作しません。

まずは整数型です。詳しくは、符号付整数で検索かけてみてください。

In [1]:
a = 10
b = 5
print(a+b) #足し算
print(a-b) #引き算
print(b-a) #引き算(逆)
print(a*b) #掛け算
print(a/b) #割り算
15
5
-5
50
2.0

pythonの整数型は僕らが直感的に行う計算と同じような動作をします。

小数型です。詳しくは浮動小数点数で検索かけてください。

In [2]:
a = 2.0
b = 0.5
print(a+b)
print(a-b)
print(b-a)
print(a*b)
print(a/b)
2.5
1.5
-1.5
1.0
4.0

小数型は小数点以下まで記述されています。コンピューターの少数の演算は完璧ではないので特定の状況では間違えることがあります。先ほどの整数型の割り算では小数型の答えが出ています。整数型は除算を行うと小数型になるという性質があります。

文字列型です。詳しくはUTF-8で検索かけてください。

In [3]:
a = 'atcoder'
b = 'レート溶かした'
split = 'a b c d e f g h i j kyopuro'
print(a+b)   #文字列の連結
print(a[0])  #先頭の文字を取り出す
print(a[-1]) #一番最後の文字を取り出す
print(b*2)   #bを二回繰り返す
atcoderレート溶かした
a
r
レート溶かしたレート溶かした
In [4]:
print(split.split())   #空白で分裂
print(a.replace('coder','驚いた')) #置換
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'kyopuro']
at驚いた

文字列の操作はほかにいろいろあります。必要になった時に調べましょう。

次はデータ構造の話をします。データ構造とはデータの保存の仕方です。冷蔵庫に入れるとすぐ使えるけど保存がきかない、冷凍庫だと解凍しないといけないけど長持ちするみたいな?

ここで話すのは
・タプル
・リスト
・ディクショナリ

タプル
同じものを同時にたくさん扱うときに使います。後述するリストとは変更ができないという点が違います。

In [5]:
tup = (0,1,2,3,4,5,6,7,8,9)
print(tup)
print(tup[0])
print(tup[1])
print(tup[-1])
tup[5] = 114
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
0
1
9
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-17d265bd10ea> in <module>()
      4 print(tup[1])
      5 print(tup[-1])
----> 6 tup[5] = 114

TypeError: 'tuple' object does not support item assignment

[]内に自分の参照したい前からの数を入れるとその値を返します。-1を指定すると最後の要素を参照できます。
最後の行で6つめの要素を変更しようとしています。タプルは変更が出来ないのでエラーが出ます。

リスト
同じものを同時にたくさん扱うときに使います。要素の変更、追加など便利な操作が行えます。

In [6]:
ls = [0,1,2,3,4,5,6,7,8,9]
print(ls[0])
print(ls[1])
print(ls[-1])
print(ls)
ls[-1] = 114       #リストの最後の要素を114に変更
print(ls)
ls.append(514)     #リストの末尾に514を追加
print(ls)
0
1
9
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 114]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 114, 514]

リストはタプルと同じように要素を参照できますが、変更することができます。

In [7]:
ls = ['こんにちは','滋賀大学','プログラミングサークル','です。']
print(ls)
print(''.join(ls))
ls = [0,1,2,3,4,5,6,7,8,9]
print(ls)
print(''.join(ls))
['こんにちは', '滋賀大学', 'プログラミングサークル', 'です。']
こんにちは滋賀大学プログラミングサークルです。
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-7-ec58ab5723ad> in <module>()
      4 ls = [0,1,2,3,4,5,6,7,8,9]
      5 print(ls)
----> 6 print(''.join(ls))

TypeError: sequence item 0: expected str instance, int found

また、リストの要素が文字列で構成されているとき、リストを連結することができます。ただし、要素が整数型など文字列型でない場合、エラーを吐きます。

ディクショナリ
ディクショナリはすでに述べたリストやタプルとは違い、前から何番目という要素の指定の仕方ではなく、名前をそのまま指定できます。詳しく知りたい方は連想配列や、ハッシュなどで検索してみてください。

In [8]:
dic = {'滋賀大学データサイエンス学部':'国立','デジタルハリウッド大学':'私立'}
print(dic['滋賀大学データサイエンス学部'])
print(dic['デジタルハリウッド大学'])
print(dic)
dic['٩(ˊᗜˋ*)و'] = '_(꒪ཀ꒪」∠)_'    #追加
print(dic)
dic.pop('デジタルハリウッド大学')    #削除
print(dic)
国立
私立
{'滋賀大学データサイエンス学部': '国立', 'デジタルハリウッド大学': '私立'}
{'滋賀大学データサイエンス学部': '国立', 'デジタルハリウッド大学': '私立', '٩(ˊᗜˋ*)و': '_(꒪ཀ꒪」∠)_'}
{'滋賀大学データサイエンス学部': '国立', '٩(ˊᗜˋ*)و': '_(꒪ཀ꒪」∠)_'}

ディクショナリはそのうち計算量を考えるようになった時に有効に動作する場合があります。

集合
簡単に言うと、重複する値を保持しないリストです。(厳密には違います。違いを理解して使えるといいですね。)

In [9]:
s = {0,1,2,3,4,5,6,7,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9}
print(s)
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

このように、複数の同じ値を入れても重複する値なので記憶されません。

In [10]:
dif = {2,3,4,5,6}
print(s-dif)
{0, 1, 7, 8, 9}

集合同士で引き算をすると差集合を示します。

In [11]:
pro = {2,3,4,5,6,114}
print(s & pro)
{2, 3, 4, 5, 6}

&を使うと両者の積集合を計算できます。

In [12]:
print(s ^ pro)
{0, 1, 7, 8, 9, 114}

^を使うと、それぞれの集合でどちらか一方にのみ含まれる集合を計算できます。

In [13]:
print(pro <= s)
print(dif <= s)
False
True

<=を使うと、右側の集合が左側の集合の部分集合かどうか判定することができます。

他にもいろいろ機能はあるので使えそうやなって思ったら調べてみてください。競プロでもたまに使える時が来ます。あえて使わなければいけない場合はそこまでないかもしれませんが。