31.基礎演習2

復習をしながら問題を解いてきましょう。!!

ここまででやったこととしては・・
制御文や内包表記、各種組み込み関数やリストなどのデータ型についてです。

もしわからなければ、今までの講義の動画をもう一度見てみましょう。

In [ ]:
 

基礎演習問題1:

リスト型の変数を宣言してみよう(要素は任意で3つ以上)

In [ ]:
 

基礎演習問題2:

文字列型のキーと数値の値を持つ
辞書型の変数を作成してみよう(要素は任意で3つ以上)。

In [ ]:
 

基礎演習問題3:

辞書型の変数を作成し、要素(キー:値)を追加してみよう

In [ ]:
 

基礎演習問題4:

IF - ELSE文を用いた処理を作成しよう
条件は整数型の変数aの値が
偶数の場合 : 「偶数」とプリント
奇数の場合 : 「奇数」とプリント

In [ ]:
 

基礎演習問題5:

for 文で enumerate関数とrange関数を用いて
その2つの値を表示(print)させよう。
range関数の引数は10とする。

In [ ]:
 

基礎演習問題6:

リスト型の変数に3つの整数値を入れて、その最大値を出力する。

In [ ]:
 

基礎演習問題7:

次の文章
「浦和、南浦和、北浦和、東浦和、西浦和、武蔵浦和、中浦和、浦和」

これを「、」で分割してキーとして辞書型の変数に格納したい。
値は空白「」とする。

In [ ]:
 

基礎演習問題8:

「無駄」を10個要素にもつリスト型を作成したい。
内包表記を使ってうまく書けないだろうか?

In [ ]:
 

基礎演習問題9:

九九は1から9までの数字同士を掛け合わせた結果になる。
これをfor文を用いて表示してみよう。
なお、文字として表示させることとし、桁も揃えよう。

In [ ]:
 

基礎演習問題10:

第9問、これを内包表記で1行でうまく書くことはできないだろうか?
色々な書き方があると思うので試してみよう。

In [ ]:
 

すぐに答えが出ない人は、動画を止めて考えてみましょう。

コツとしては何を入力したら、どう計算されて、どう出力されるのか
それを考えながら書いてみましょう。

答えはこの下に





回答

基礎演習問題1:

リスト型の変数を宣言してみよう(要素は任意で3つ以上)

In [1]:
# リストは[]囲んで定義する
a = [1,2,3,4,5]

基礎演習問題2:

文字列型のキーと数値の値を持つ
辞書型の変数を作成してみよう(要素は任意で3つ以上)。

In [2]:
# 辞書型は{} 波カッコで定義する
d = {'a':1 , 'b':2 , 'c':3}

基礎演習問題3:

辞書型の変数を作成し、要素(キー:値)を追加してみよう

In [3]:
d = {'a':1 , 'b':2 , 'c':3}
# 辞書の要素の追加は変数名[キー] = 値
d['d'] = 4
print(d)
{'c': 3, 'd': 4, 'a': 1, 'b': 2}

基礎演習問題4:

IF - ELSE文を用いた処理を作成しよう
条件は整数型の変数aの値が
偶数の場合 : 「偶数」とプリント
奇数の場合 : 「奇数」とプリント

In [4]:
a = 10
if a%2==0:
    print('偶数')
else:
    print('奇数')
偶数

基礎演習問題5:

for 文で enumerate関数とrange関数を用いて
その2つの値を表示(print)させよう。
range関数の引数は10とする。

In [5]:
# enumerate の結果を1つの変数に格納する。
for i in enumerate(range(10)):
    print(i)
(0, 0)
(1, 1)
(2, 2)
(3, 3)
(4, 4)
(5, 5)
(6, 6)
(7, 7)
(8, 8)
(9, 9)
In [6]:
# enumerate の結果を2つの変数に格納する。
for i,r in enumerate(range(10)):
    print(i , r)
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9

基礎演習問題6:

リスト型の変数に3つの整数値を入れて、その最大値を出力する。

In [7]:
a = [10,20,30]
print(max(a))
30

基礎演習問題7:

次の文章
「浦和、南浦和、北浦和、東浦和、西浦和、武蔵浦和、中浦和、浦和」

これを「、」で分割してキーとして辞書型の変数に格納したい。
値は空白「」とする。

In [8]:
a = '浦和、南浦和、北浦和、東浦和、西浦和、武蔵浦和、中浦和、浦和'
# split関数で 、 で区切る。
b = a.split('、')
# 内包表記で辞書型にする
d = {k:'' for k in b}
print(d)
{'武蔵浦和': '', '中浦和': '', '東浦和': '', '浦和': '', '南浦和': '', '北浦和': '', '西浦和': ''}
In [9]:
a = '浦和、南浦和、北浦和、東浦和、西浦和、武蔵浦和、中浦和、浦和'
# split関数で 、 で区切る。
b = a.split('、')
# 内包表記を使わ無い場合
d = {}
for k in b:
    d[k]=''
print(d)
{'武蔵浦和': '', '中浦和': '', '東浦和': '', '浦和': '', '南浦和': '', '北浦和': '', '西浦和': ''}

基礎演習問題8:

「無駄」を10個要素にもつリスト型を作成したい。
内包表記を使ってうまく書けないだろうか?

In [10]:
muda = ['無駄' for i in range(10)]
print(muda)
['無駄', '無駄', '無駄', '無駄', '無駄', '無駄', '無駄', '無駄', '無駄', '無駄']

基礎演習問題9:

九九は1から9までの数字同士を掛け合わせた結果になる。
これをfor文を用いて表示してみよう。
なお、文字として表示させることとし、桁も揃えよう。

In [11]:
for i in range(1,10):
    for j in range(1,10):
        # 2桁表記にフォーマットする , 改行コードをなくす
        print('{:02}\t'.format(i*j), end='')
    print() # 改行のみを行う
01	02	03	04	05	06	07	08	09	
02	04	06	08	10	12	14	16	18	
03	06	09	12	15	18	21	24	27	
04	08	12	16	20	24	28	32	36	
05	10	15	20	25	30	35	40	45	
06	12	18	24	30	36	42	48	54	
07	14	21	28	35	42	49	56	63	
08	16	24	32	40	48	56	64	72	
09	18	27	36	45	54	63	72	81	

基礎演習問題10:

第9問、これを内包表記で1行でうまく書くことはできないだろうか?
色々な書き方があると思うので試してみよう。

In [12]:
# 1段分の文字列を9つ持つリスト , 再度 join関数を使って リストを文字に、改行で連結
print('\n'.join([''.join(['{:02}\t'.format(i*j) for i in range(1,10) ])for j in range(1,10)]))
01	02	03	04	05	06	07	08	09	
02	04	06	08	10	12	14	16	18	
03	06	09	12	15	18	21	24	27	
04	08	12	16	20	24	28	32	36	
05	10	15	20	25	30	35	40	45	
06	12	18	24	30	36	42	48	54	
07	14	21	28	35	42	49	56	63	
08	16	24	32	40	48	56	64	72	
09	18	27	36	45	54	63	72	81	

さて基礎演習はいかがだったでしょうか?
処理を1つ1つ追いながらコードを書くことで、問題が解けるように
なっていくのではないかと思います。

仕事などで九九を使うことはないと思いますが
プログラムを組み立ててゆくことを覚えるのには
最適な題材です。

上記で紹介した解法以外にも書き方はあると思いますので
色々な解き方を試して見てください。

分からなかった方は、文字列やフォーマットの回、繰り返しの回などを
参考にしていただいて、理解を深めていただければ次第に解けるようになるかと
思います。