Python3練習問題 01
練習01 計算する(ex01.py)
　整数、5 と整数、2 の２つの数の計算を行なうプログラムを書きなさい。計算は足し算、引き算、かけ算、割り算の商と余り、実数の割り算の５つが答えとして出るようにしなさい。
実行結果
5 ＋ 2 = 7
5 − 2 = 3
5 × 2 = 10
5 ÷ 2 = 2 余り 1
5 ÷ 2 = 2.5
...

練習02 データ入力(ex02.py)
　キーボードから英語と算数の成績を入力し、入力された得点とともに、得点の合計と平均を計算して表示するプログラムを作成せよ。
実行結果
英語の成績を入力して下さい> 65
数学の成績を入力して下さい> 88
英語の得点: 65
数学の得点: 88
合　　　計: 153
平　　　均: 76.5
...

練習03 BMI(Body Mass Index) (ex03.py)
　健康のために肥満度をチェックしてみましょう。身長と体重を入力してあなたの肥満度（BMI＝体重(kg)÷身長(m)の二乗）を計算するプログラムを作成し、計算結果を確かめてください。
　判定基準が18.5未満→やせ、18.5〜25未満→標準、25〜30未満→肥満、30以上→高度肥満となっているようです。
実行結果
身長をm単位で入力して下さい> 1.70
体重をkg単位で入力して下さい> 65
BMI = 22.49134948096886
...

練習04 時速秒速変換 (ex04.py)
　時速を秒速に直しましょう。時速をkm/hの単位で入力すると、秒速がm/sの単位で表示されるプログラムを書きなさい。
実行結果
時速(km/h)> 36
秒速 = 10.0 m/s
...

練習05 10進数2進数変換 (ex05.py)
　255以下の10進数を入力して、それを８桁の２進数で表示するプログラムを書きなさい。
実行結果
10進数> 45
45 = 00101101
...

練習06 金種計算 (ex06.py)
　金額を入力するとその金額を出来るだけ少ない枚数の貨幣を使って支払えるように貨幣の枚数を数えるプログラムを書きなさい。貨幣は、{１万円札、五千円札、千円札、五百円玉、百円玉、五十円玉、十円玉、五円玉、一円玉}とする（余り使わないので２千円札は除く）。
実行結果
金額(円)> 48767
金額: 48767 円
一万円札= 4 枚
五千円札= 1 枚
千円札　= 3 枚
五百円玉= 1 枚
百円玉　= 2 枚
五十円玉= 1 枚
十円玉　= 1 枚
五円玉　= 1 枚
一円玉　= 2 枚
...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/python3
# いろいろな方法あり。
money = int(input('金額(円)> '))
print('金額:',money,'円',sep=' ')
maisuu = money // 10000
money = money % 10000
print('一万円札=',maisuu,'枚',sep=' ')
maisuu = money // 5000
money = money % 5000
print('五千円札=',maisuu,'枚',sep=' ')
maisuu = money // 1000
money = money % 1000
print('千円札　=',maisuu,'枚',sep=' ')
maisuu = money // 500
money = money % 500
print('五百円玉=',maisuu,'枚',sep=' ')
maisuu = money // 100
money = money % 100
print('百円玉　=',maisuu,'枚',sep=' ')
maisuu = money // 50
money = money % 50
print('五十円玉=',maisuu,'枚',sep=' ')
maisuu = money // 10
money = money % 10
print('十円玉　=',maisuu,'枚',sep=' ')
maisuu = money // 5
money = money % 5
print('五円玉　=',maisuu,'枚',sep=' ')
print('一円玉　=',money,'枚',sep=' ')
練習07 BMIチェック改良版 (ex07.py)
　健康のために肥満度をチェックしてみましょう。身長と体重を入力してあなたの肥満度（BMI＝体重(kg)÷身長(m)の二乗）を計算するプログラムを作成し、判定基準に従って、18.5未満→やせ、18.5〜25未満→標準、25〜30未満→肥満、30以上→高度肥満という判定を返すプログラムを作りなさい。
実行結果
身長をm単位で入力して下さい> 1.70
体重をkg単位で入力して下さい> 65
BMI = 22.49134948096886
あなたは「標準」です。
...

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/python3
height = float(input('身長をm単位で入力して下さい> '))
weight = float(input('体重をkg単位で入力して下さい> '))
bmi = weight/height**2
print('BMI = ',bmi,sep=' ')
if bmi < 18.5 :
    print('あなたは「'+'痩せすぎ'+'」です。')
elif bmi >= 18.5 and bmi < 25.0 :
    print('あなたは「'+'標準'+'」です。')
elif bmi >= 25.0 and bmi < 30.0 :
    print('あなたは「'+'肥満'+'」です。')
else :
    print('あなたは「'+'高度肥満'+'」です。')
練習08 整数曜日変換 (ex08.py)
　0から6までの整数を入力して、それぞれ、0ならば「日曜」、1ならば「月曜」、...と結果を返すプログラムを書きなさい。但し、0〜6の数以外の数値が入力された場合には、「0から6までの数を入力してください」とメッセージを返すようにしなさい。
実行結果
数(0-6)> 5
金曜日
...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/python3
weeknumber = int(input('数(0-6)> '))
if weeknumber == 0 :
    print('日曜日')
elif weeknumber == 1 :
    print('月曜日')
elif weeknumber == 2 :
    print('火曜日')
elif weeknumber == 3 :
    print('水曜日')
elif weeknumber == 4 :
    print('木曜日')
elif weeknumber == 5 :
    print('金曜日')
elif weeknumber == 6 :
    print('土曜日')
else :
    print('0〜6までの整数を入力して下さい。')
練習09 うるう年の判定 (ex09.py)
　うるう年というのは、四年に一度、二月が29日まである年のことをいうと思われていますが、正確にはもっと複雑です。西暦の年に対して、
年が400で割り切れるなら、うるう年です。
そうではなくて年が100で割り切れるならば、うるう年ではありません。
そうでもなくて年が4で割り切れるならば、うるう年です。
このルールに従って、西暦の年を入力してうるう年を判定するプログラムを書きなさい。
実行結果
西暦で年を入力して下さい> 1996
1996年はうるう年です。
...

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/python3
year = int(input('西暦で年を入力して下さい> '))
leap = False # 最初にうるう年ではないと指定。
if year % 400 == 0 :
    leap = True
elif year % 100 == 0 :
    leap = False
elif leap % 4 == 0 :
    leap = True
if leap :
    print(str(year)+'年はうるう年です。')
else :
    print(str(year)+'年はうるう年ではありません。')
練習10 あなたの誕生日は何曜日？ (ex10.py)
　Zëllerの公式(1887)という公式を使うと、1582年10月15日以降の日付から曜日を計算することができます。整数(int)として年をyear、月をmonth、日をdayとした時、曜日(weekday)は
 weekday = (year + (year // 4) - (year // 100) + (year // 400) + ((13*month+8) // 5) + day) % 7
という式で計算できます。曜日は整数として0が日曜、1が月曜、...、6が土曜となります。
但し、1月と2月はそれぞれ前の年の13月、14月として計算する必要があります。例えば、2000年1月というのは上の計算式では、1999年13月として計算しなければなりません。
自分の誕生日を入力して、生まれた日が何曜日かを調べなさい。
実行結果
年> 1996
月> 10
日> 4
1996年10月4日は金曜日です。

年> 1999
月> 11
日> 29
1999年11月29日は月曜日です。
...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/python3
year = int(input('年> '))
month = int(input('月> '))
day = int(input('日> '))
datestr = str(year)+'年'+str(month)+'月'+str(day)+'日'
if month == 1 or month == 2 :
    year = year - 1
    month = month + 12
weekday = (year + (year // 4) - (year // 100) + \
  (year // 400) + ((13*month+8) // 5) + day) % 7
if weekday == 0 :
    weekstr = '日曜日'
elif weekday == 1 :
    weekstr = '月曜日'
elif weekday == 2 :
    weekstr = '火曜日'
elif weekday == 3 :
    weekstr = '水曜日'
elif weekday == 4 :
    weekstr = '木曜日'
elif weekday == 5 :
    weekstr = '金曜日'
elif weekday == 6 :
    weekstr = '土曜日'
print(datestr+'は'+weekstr+'です。')
練習11 ジャンケンするプログラム (ex11.py)
　計算機とジャンケンをするプログラムを書きましょう。グー、チョキ、パーをそれぞれ0,1,2の整数で表すとします。あなたの出す手を整数で入力し、勝負するようにします。コンピュータの出す手は乱数（同じ確率ででたらめに数を自動的に生成する仕組み）を使って作り出します。具体的には、random.randint(最小値, 最大値)という式を使うと自動的に最小値から最大値までのでたらめな整数を作ってくれます。(プログラムの始めに、'import random'の宣言が必要)
 comp=random.randint(0,2)
こうすると、このcompに0か1か2の整数がでたらめに代入されます。入力したあなたの手とこのcompを比較して、ジャンケンの勝負を判定するプログラムを作りなさい。
実行結果
ジャンケンポン！
あなたは？(0:グー, 1:チョキ, 2:パー)> 0
わたしはチョキ。あなたはグー。あなたの勝ちです。
...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/python3
import random
print('ジャンケンポン!')
yours = int(input('あなたは？(0:グー, 1:チョキ, 2:パー)> '))
comp = random.randint(0,2)
if comp == 0 : # グー
    compstr = 'わたしはグー。'
    if yours == 0 :
        yourstr = 'あなたもグー。'
        result = 'あいこです。'
    elif yours == 1 :
        yourstr = 'あなたはチョキ。'
        result = 'あなたの負けです。'
    else :
        yourstr = 'あなたはパー。'
        result = 'あなたの勝ちです。'
elif comp == 1 : # チョキ
    compstr = 'わたしはチョキ。'
    if yours == 0 :
        yourstr = 'あなたはグー。'
        result = 'あなたの勝ちです。'
    elif yours == 1 :
        yourstr = 'あなたもチョキ。'
        result = 'あいこです。'
    else :
        yourstr = 'あなたはパー。'
        result = 'あなたの負けです。'
else : # パー
    compstr = 'わたしはパー。'
    if yours == 0 :
        yourstr = 'あなたはグー。'
        result = 'あなたの負けです。'
    elif yours == 1 :
        yourstr = 'あなたはチョキ。'
        result = 'あなたの勝ちです。'
    else :
        yourstr = 'あなたもパー。'
        result = 'あいこです。'
print(compstr+yourstr+result)
練習12 数の比較 (ex12.py)
　３つの数を入力し、数を昇順に並べ替えてから出力するプログラムを作成してください。
実行結果
数1> 55
数2> 25
数3> 13
13 25 55
...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/python3
a = int(input('数1> '))
b = int(input('数2> '))
c = int(input('数3> '))
# 戦略。aを一番小さくし、次にbを決める。
if a > b :
    temp = a
    a = b
    b = temp
if a > c :
    temp = a
    a = c
    c = temp
#
# a が最小。
#
if b > c :
    temp = b
    b = c
    c = temp
print(a,b,c,sep=' ')        
練習13 べき乗計算 (ex13.py)
　1以上の整数を入力し、その数までのべき乗を計算するプログラムを作成せよ。
実行結果
数> 25
25! = 15511210043330985984000000
...

1
2
3
4
5
6
#!/usr/bin/python3
n = int(input('数> '))
fac = 1
for i in range(1,n+1) :
    fac *= i
print(str(n)+'! =',fac,sep=' ')
練習14 棒グラフ (ex14.py)
　数字を入力し、入力した数だけ画面に■印を表示するプログラムを書きなさい。
実行結果
数> 25
25:■■■■■■■■■■■■■■■■■■■■■■■■■
...

1
2
3
4
5
6
7
8
#!/usr/bin/python3
n = int(input('数> '))
print(str(n)+':',end='') # 改行しない出力
for i in range(0,n) :
    print('■',end='')
print() # 改行だけ出力
# Python3による別解
print(str(n)+':'+('■'*n))
練習15 棒グラフ (ex15.py)
　数字を入力して、1からその数までの棒グラフを順に表示するプログラムを書きなさい。
実行結果
数> 8
1:■
2:■■
3:■■■
4:■■■■
5:■■■■■
6:■■■■■■
7:■■■■■■■
8:■■■■■■■■
...

1
2
3
4
5
6
7
#!/usr/bin/python3
n = int(input('数> '))
for j in range(1,n+1) :
    print(str(j)+':',end='') # 改行しない出力
    for i in range(0,j) :
        print('■',end='')
    print() # 改行だけ出力
練習16 データ数のわからない集計 (ex16.py)
　数を次々と入力し、負の数が入力されるまで続け、負の数が入力されたら、それまでの数の合計と平均を求めるプログラムを書きなさい。
実行結果
データ入力(負の数で終了)> 10
データ入力(負の数で終了)> 20
データ入力(負の数で終了)> 30
データ入力(負の数で終了)> 40
データ入力(負の数で終了)> 50
データ入力(負の数で終了)> -1
データ数: 5 合計: 150 平均: 30.0
...

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/python3
counter = 0
gokei = 0
data = int(input('データ入力(負の数で終了)> '))
while data >= 0 :
    counter += 1
    gokei += data
    data = int(input('データ入力(負の数で終了)> '))
heikin = gokei/counter
print('データ数:',counter,'合計:',gokei,'平均:',heikin)
練習17 借金を返済しよう (ex17.py)
　借金をして月々、定額を返済していくと借金はどうなっていくのかを調べるプログラムを作成しよう。借金の金額と、利息の年利率(%)、月々の返済額を入力すると、毎月、借金がなくなるまで月数と借金の金額を表示するものとする。月々の借金は、借金の利息年利率/12（月割り）分増加するが、返済分だけ減る。
実行結果
借金> 100000
年利率(%)> 14.0
返済額> 20000
1月: 返済額 20000 円 残り 81166 円
2月: 返済額 20000 円 残り 62113 円
3月: 返済額 20000 円 残り 42838 円
4月: 返済額 20000 円 残り 23338 円
5月: 返済額 20000 円 残り 3610 円
6月: 返済額 3652 円 これで完済。 返済総額:  103652 円
...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/python3
shakkin = int(input('借金> '))
riritsu = float(input('年利率(%)> '))
hensai =  int(input('返済額> '))
total = 0
month = 0
while shakkin > hensai :
    month += 1
    shakkin = shakkin*(1 + riritsu/12/100) - hensai
    print(str(month)+'月: 返済額',hensai,'円','残り',\
    int(shakkin),sep=' ')
    total += hensai
month += 1
shakkin = shakkin*(1 + riritsu/12/100)
total += shakkin
print(str(month)+'月: 返済額',int(shakkin),'円','これで完済。','返済総額: ',\
int(total),'円',sep=' ')
練習18 モンテカルロ・シミュレーション (ex18.py)
　モンテカルロ・シミュレーションは、コンピュータ上で仮想的に実験をしてみて、そこから結果を求める問題の解き方です。ここでは円周率を求めてみましょう。
　一辺の長さが１の正方形に半径１の四分の１円が入っているとします。この中に、次々とダーツを投げて円の中に入った数を勘定します。投げるダーツの内で円の中に入るダーツの個数の割合は、正方形の面積と四分の一円の面積の割合と同じです。つまり、
    円の中に入ったダーツの数(nc)／投げたダーツの総数(n) = 四分の１円の面積／正方形の面積
です。沢山、ダーツを投げれば投げるほどこの値は一定になります。これを使って円周率を求めることができます。
    π = 4 * nc / n
となるからです。 　ダーツを投げるにはジャンケンの時に使った乱数を使います。(つまり、import randomが必要です。)
random.random() --- [0.0,1.0]の範囲の浮動小数点数を生成
投げたダーツが正方形の中に落ちる位置(x,y)をそれぞれ乱数で与えます。そして、x2 + y2 が１より小さければ、円の中に落ちたということになるので、ncを1増やします。ダーツを投げる回数を入力して、円周率を求めるプログラムを作りなさい。
実行結果
実行回数> 100000000
PI = 3.14169316
...

1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/python3
import random
n = int(input('実行回数> '))
nc = 0
for i in range(0,n) :
    x = random.random()
    y = random.random()
    if x**2 + y**2 < 1 :
        nc += 1
pi = 4.0 * nc / n
print('PI =',pi,sep=' ')
Copyright © 2016 by Junya Morishita All Rights Reserved.

SmaSurf Quick Search