前回の授業資料では、次のような説明をしました。
変数の名前は、アルファベットと数字と「_」を組み合わせて複数文字にできます(ただし、一定のルールがあります)。
この「一定のルール」について、内容を説明しておきます。
a = 1
A = 2
print(a,A)
1 2
0a = 1
File "<ipython-input-2-30adbb2710de>", line 1 0a = 1 ^ SyntaxError: invalid syntax
if = 1
File "<ipython-input-3-773eba7f7781>", line 1 if = 1 ^ SyntaxError: invalid syntax
変数の名前にはアルファベットの小文字を使い、必要なら区切り文字として「_」を入れることにすれば、基本的にはそれで十分です。
print(type(10))
print(type(0.5))
print(type("abc"))
print(type([1,2,3]))
print(type(True))
print(type({"a":1,"b":2}))
<class 'int'> <class 'float'> <class 'str'> <class 'list'> <class 'bool'> <class 'dict'>
変数に対してtype関数を使えば、変数に代入されているオブジェクトの型が分かります。
a = 10
print(type(a))
b = "abc"
print(type(b))
<class 'int'> <class 'str'>
同じ演算子(計算記号)を使っていても、オブジェクトの型によって演算の意味が変わります。
例えば、「+」は数値(整数と小数)に対しては加算を意味しますが、文字列に対しては結合を意味します。
a = 1
b = 2
print(a+b)
c = "Niigata"
d = "University"
print(c+" "+d)
3 Niigata University
「数値+文字列」または「文字列+数値」を計算しようとすると、型の不一致でエラーになります。
a = "1"
print(9+a)
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-7-d4c631f2be7b> in <module> 1 a = "1" ----> 2 print(9+a) TypeError: unsupported operand type(s) for +: 'int' and 'str'
score = 100
print("点数は"+score+"点です。")
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-8-b4f0bb9025a8> in <module> 1 score = 100 ----> 2 print("点数は"+score+"点です。") TypeError: can only concatenate str (not "int") to str
このエラーを防ぐには、int関数またはfloat関数、str関数で型の変換を行います。
a = "1"
print(9+int(a))
score = 100
print("点数は"+str(score)+"点です。")
10 点数は100点です。
なお、数値の計算の過程では、整数型の変数が自動的に小数型に変換される場合があります。
a = 10
a = a+1.0
print(a, type(a))
b = 4
b = b/2
print(b, type(b))
11.0 <class 'float'> 2.0 <class 'float'>
number_list = [1,3,5,7]
print(number_list)
name_list = ["Aさん","Bさん","Cさん"]
print(name_list)
empty_list = [] #空のリスト
print(empty_list)
[1, 3, 5, 7] ['Aさん', 'Bさん', 'Cさん'] []
リストの各要素は、list[index]
の形で参照します。indexは要素の番号で、1ではなく0から始まる点に注意が必要です。
print(name_list[0])
print(name_list[1])
print(name_list[2])
print(number_list[0]+number_list[3])
Aさん Bさん Cさん 8
参照した要素に新たな値を代入することで、要素の変更が可能です。
number_list[2] = 0
print(number_list)
[1, 3, 0, 7]
リストの末尾に要素を追加するために、appendメソッドが用意されています。メソッドというのは特定の型のオブジェクトと結び付いた関数のことで、object.method(parameter)
の形で使います。
number_list.append(10)
print(number_list)
name_list.append("Dさん")
print(name_list)
[1, 3, 0, 7, 10] ['Aさん', 'Bさん', 'Cさん', 'Dさん']
len関数を使えば、リストの要素数を求めることができます。
print(len(number_list))
print(len(name_list))
print(len(empty_list))
5 4 0
number_list = [1,3,5,7]
for a in number_list:
print(a)
1 3 5 7
与えられたリスト[1, 3, 5, 7, 9]を元に、for文を使って新しいリスト[1, 9, 25, 49, 81]を作成してください。
given_list = [1,3,5,7,9]
print(given_list)
new_list = []
#ここに、for文を書いてください。
print(new_list)
[1, 3, 5, 7, 9] []
range関数を使うと、連続した整数の列(または等差数列)を得ることができます。得られるオブジェクトはほぼリストと同じように扱えますが、厳密にはrange型という別のものです(値を表示したいならlist関数でリストに変換する必要があります)。
print(range(10))
print(list(range(10))) #range(b)は、0からb-1までの整数の列
print(list(range(2,7))) #range(a,b)は、aからb-1までの整数の列
print(list(range(1,10,3))) #range(a,b,c)は、aからb-1までの公差cの等差数列
range(0, 10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [2, 3, 4, 5, 6] [1, 4, 7]
for文において、リストの代わりにrange関数を使うと便利な場合があります。
name_list = ["Aさん","Bさん","Cさん","Dさん"]
score_list = [70,90,50,60]
for i in range(4):
print(name_list[i]+"の点数は"+str(score_list[i])+"点です。")
Aさんの点数は70点です。 Bさんの点数は90点です。 Cさんの点数は50点です。 Dさんの点数は60点です。
for文とrange関数を使って、1から10までの整数の和を求めるコードを書いてください。
result = 0
#ここに、range関数を用いたfor文を書いてください。
print("1から10までの整数の和は",result)
1から10までの整数の和は 0
任意の数値のリストが与えられたときに、for文を使ってリストの要素の平均を求めるコードを書いてください。余裕があればさらに、リストの要素の分散を求めるコードを追加してください。
given_list = [64,41,79,56,29,98,71,37]
print(given_list)
result = 0
#ここに、for文を書いてください。
print("リストの要素の平均は",result)
[64, 41, 79, 56, 29, 98, 71, 37] リストの要素の平均は 0
演習1~演習3に取り組んでください。