プログラミング入門I 宿題 2024.06.05

Back


もう一度再帰に挑戦してみましょう.放射性元素のヨウ素131の半減期は約8日です.乱数により3から20の整数を1つ発生させ,放射線量がその逆数以下まで減少するには何日かかるのかを答えるプログラムを作成しましょう.

Student number: s236099

Days to below 1/8 for iodine-131 radioactivity: 24

------------------------

必ず再帰を使用してください.
解答用紙を使用する際には,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がPythonのプログラムとなっていますので,実行してエラーの無いことを確認してから提出してください.

指定の解答用紙を使用していない,実行時にエラーが出る,学生番号と名前が無い,というような答案は提出されても採点しません.注意してください.


解答例

# #############################
#
# プログラミング入門II 宿題 2024.6.5
# 学生番号:  s236099
# 氏名:     松江 花子
#
# #############################

import random

print('Student number: s236099')
print('')

def half_life(n):
    if n == 0:
        return 1
    else:
        return half_life(n - 1) / 2


h_I131 = 8

ratio = random.randint(3, 20)

#ratio = 8

n = 0
while half_life(n) > 1 / ratio:
    n += 1

print(f'Days to below 1/{ratio} for iodine-131 radioactivity: ', end = '')
print(n * h_I131)


print('\n------------------------\n')
# #############################
#
# プログラミング入門II 宿題 2024.6.5
# 学生番号:  s236099
# 氏名:     松江 花子
#
# #############################

import random

print('Student number: s236099')
print('')

def radio(n):
    if n == 0:
        return 1
    else:
        return radio(n - 1) * (1 / 2) ** (1 / h_I131)


h_I131 = 8

ratio = random.randint(3, 20)

n = 0
while radio(n) > 1 / ratio:
    n += 1

print(f'Days to below 1/{ratio} for iodine-131 radioactivity: {n}')

print('\n------------------------\n')
単純に半減期の倍数で答える場合厳密な日数を答える場合


Back