2023練習問題 解答例¶

  • もっと優れたアルゴリズムによるプログラムや、もっと優れたプログラムの書き方があります。授業で学んだ方法だけを使って解いています。
  • 問題文はこちら

01 画面に表示する¶

  1. こんにちは と画面に表示する
  2. 自分の名前を表示する
In [ ]:
#01-1
#こんにちは と画面に表示する
print('こんにちは')
In [ ]:
#01-2
#自分の名前を表示する
print('自分の名前')

02 計算結果を画面に表示する¶

  1. 2の10乗を表示する
  2. 54321を17で割った余りを表示する
In [ ]:
#02
print(2**10)
print(54321%17)

03 データをつなげて画面に表示する¶

  1. HelloとWorldをつなげて表示する
  2. 第 と 3 と 回 をつなげて表示する
In [ ]:
#03
print('Hello','World')
print('第',3,'回')

04 変数を使う¶

  1. 変数nameに自分の名前を代入し、表示する
  2. 変数schoolに立川高校を代入し、表示する
  3. すでに入力された変数nameと変数schoolをつなげて表示して、立川高校 自分の名前と表示する
In [ ]:
#04
name='自分の名前'
school='立川高校'
print(name,school)

05 文字を入力させる¶

  1. 天気は? と表示して文字を入力させ、今日は ○○ ですね と表示する
In [ ]:
#05
tenki=input('天気は?')
print('今日は',tenki,'ですね')

06 文字列の数を数値にする¶

  1. 数を入力させ、5乗した結果を表示する 2.半径を入力させ、面積を表示する
  • 円周率は3.14とする
In [ ]:
#06-1
moji=input()
suuti=int(moji)
print(suuti**5)
In [ ]:
#06-2
hankei=int(input('半径?'))
print(3.14*hankei**2)

07 文字列の数を数値にする¶

以下の条件を満たすプログラムを作成せよ

  • 整数 A, B が与えられる.縦の辺の長さが A cm,横の辺の長さが B cmである下図のような長方形の面積は何cm2 か求めよ.
  • 問題文を書き直すと
    • 入力された数値を変数Aに代入
    • 入力された数値を変数Bに代入
    • AとBの積を画面に表示
In [ ]:
#07
A=int(input())
B=int(input())
print(A*B)

08 条件によって違う処理をする¶

  1. 数を入力させ、5より大きければ1、そうでなければ0を表示する
  2. 数値を入力させ、175以上ならL、それ未満ならMと表示する
In [ ]:
#08-1
num=int(input('Number?'))
if num>5:
    print(1)
else:
    print(0)
In [ ]:
#08-2
num=int(input('Number?'))
if num>=175:
    print('L')
else:
    print('M')

09 繰り返して実行する¶

  1. 1~100までの数を表示する
  2. 2~100までの偶数を表示する
In [ ]:
#09-1
for i in range(100):
    print(i+1)
In [ ]:
#09-2
for i in range(2,101,2):
    print(i)

10 繰り返して実行する¶

  1. 1~1000までの数の和を表示する
  2. 1~15までの積を表示する
In [ ]:
#10-1
S=0
for i in range(1000):
    S=S+i+1
print(S)
In [ ]:
#10-2
S=1
for i in range(15):
    S=S*(i+1)
print(S)

11 制御構造の組み合わせ¶

  1. for文とif文を組み合わせて1~50までの4の倍数を表示するプログラムを作る
In [ ]:
#11
for i in range(50):
    num=i+1
    if num%4==0:
        print(num)

12 制御構造の組み合わせ¶

  • for文とif文を組み合わせて1~100までの6の倍数の和を表示するプログラムを作る
In [ ]:
#12
S=0
for i in range(100):
    num=i+1
    if num%6==0:
        S=S+num
print(S)

13 入力に対応したプログラム¶

  • Number?と表示して、入力した数以下の4の倍数を表示するプログラムを作る。
In [ ]:
#13
suu=int(input('Number?'))
for i in range(suu):
    num=i+1
    if num%4==0:
        print(num)

14 繰り返したり繰り返さなかったり¶

問題1

  • 1~30までの4の倍数を表示し、和を表示するプログラムを作る

問題2

  • 1~15までの3の倍数を表示し、積を表示するプログラムを作る
In [ ]:
#14-1
S=0
for i in range(30):
    num=i+1
    if num%4==0:
        print(num)
        S=S+num
print('和は',S)
In [ ]:
#14-2
S=1
for i in range(15):
    num=i+1
    if num%3==0:
        print(num)
        S=S*num
print('積は',S)

15 range関数の使い方¶

問題1

  • 10~20の3の倍数を表示するプログラムを作る
    • シンプルに2行で

問題2

  • 10から0まで2ずつ減る数を表示するプログラムを作る
In [ ]:
#15-1
for i in range(12,20,3):
    print(i)
In [ ]:
#15-2
for i in range(10,-1,-2):
    print(i)

16 リスト(配列)¶

問題1

  • 以下のリストからBを取り出すプログラムを作れ

問題2

  • 以下のリストから要素を逆順に表示するプログラムを作れ
    • for文を使う

moji=['A','B','C','D','E']

In [ ]:
#16-1
moji=['A','B','C','D','E']
print(moji[1])
In [ ]:
#16-2
moji=['A','B','C','D','E']
for i in range(5):
    print(moji[4-i])

17 リスト(配列)¶

  • リストに30までの4の倍数を格納しリストと合計を表示するプログラムを作れ
In [ ]:
#17
S=0
L=[]
for i in range(30):
    num=i+1
    if num%4==0:
        L.append(num)
        S=S+num
print(L)
print(S)

18 リスト(配列)¶

  • リストに30までの4の倍数を格納しリストと平均を表示するプログラムを作れ
In [ ]:
#18
S=0
L=[]
C=0
for i in range(30):
    num=i+1
    if num%4==0:
        L.append(num)
        S=S+num
        C=C+1
print(L)
print(S/C)

19 まとめて入力する¶

  • まとめて入力された数値の積を求めるプログラムを作る
In [ ]:
#19
suu=input().split()
V=1
for i in range(len(suu)):
    num=int(suu[i])
    V=V*num
print(suu)
print(V)

20 while文¶

  • while文を使い「羊が1匹」「羊が2匹」と10匹まで表示するプログラム
In [ ]:
#20
num=0
while num<10:
    print('羊が',num+1,'匹')
    num=num+1

21 while文¶

  • 10以上の数を入力するまで繰り返し入力を求めるプログラム
In [ ]:
#21
num=0
while num<10:
    num=int(input('数を入力'))
    if num<10:
        print('もう一度')
print('当たり')

22 if文¶

  • 入力された数が18以上ならAdult、12以上ならYoung、それ以外はChildと表示するプログラムをかけ
In [ ]:
#22
age=int(input('年齢を入力'))
if age>=18:
    print('Adult')
elif age>=12:
    print('Young')
else:
    print('Child')

23 総合問題¶

  • 入力された数を2から順に割っていき、割り切れた数を表示するプログラム
In [ ]:
#23
suu=int(input('数を入力'))
waru=2
warikire=False
while warikire==False:
    if suu%waru==0:
        print(suu,'は',waru,'で割り切れます')
        warikire=True
    else:
        waru=waru+1

24 制御構造の組み合わせ¶

以下の条件を満たすプログラムを作成せよ

  • Number?と画面に表示し、入力された数が素数か判定する
  • 擬似言語で書くと

  • 変数 suu に入力された数を代入
  • 変数 sosu に True(真)を代入
  • iを2からsuu未満まで変えて繰り返し:
    • suuをiで割った余りが0なら:
      • 変数 sosu にFalse(偽)を代入
  • sosuが真なら:
    • suuは素数と表示
  • そうでなければ:
    • suuは素数でないと表示
In [ ]:
#24
suu=int(input('Number?'))
sosu=True
for i in range(2,suu):
    if suu%i==0:
        sosu=False
if sosu==True:
    print(suu,'は素数')
else:
    print(suu,'は素数でない')

25 制御構造の組み合わせ¶

以下の条件を満たすプログラムを作成せよ

  • 入力された数までの素数を表示する

  • ヒント

    • フローチャートを参考に
    • for文を2回使う
In [ ]:
#25
suu=int(input('Number?'))
for j in range(2,suu):
    sosu=True
    for i in range(2,j):
        if j%i==0:
            sosu=False
            break
    if sosu==True:
        print(j)

26 制御構造の組み合わせ¶

以下の条件を満たすプログラムを作成せよ

  • 入力された数より小さい最大の素数を表示
In [ ]:
#26
suu=int(input('Number?'))
maxsosu=0
for j in range(2,suu):
    sosu=True
    for i in range(2,j):
        if j%i==0:
            sosu=False
            break
    if sosu==True:
        maxsosu=j
print(maxsosu)
In [ ]:
#26(別解)
suu=int(input('Number?'))
for j in range(suu-1,2,-1):
    sosu=True
    for i in range(2,j):
        if j%i==0:
            sosu=False
            break
    if sosu==True:
        print(j)
        break

27 制御構造の組み合わせ¶

以下の条件を満たすプログラムを作成せよ

  • 入力された数より大きい最小の素数を表示

  • ヒント

    • フローチャートを参考に
    • for文とwhile文を使うと作りやすい
In [ ]:
#27
suu=int(input('Number?'))
sosu=False
if suu<2:
    suu=2
    sosu=True
while sosu==False:
    suu=suu+1
    for i in range(2,suu):
        if (suu)%i==0:
            sosu=False
            break
        else:
            sosu=True
print(suu)