2016年8月18日 星期四

python 程式設計50題測試範例-6

6、請問若有G公克之同位素鍶90(Sr90)(半衰期為29年),
  (1) 請列印出經過N年後,剩餘的重量為何?(剩餘量=初始重量G * C^(Y/H)
    ,H表放射性同位素之半衰期。C為e^-0.693,e=2.71828)
  (2) 輸入剩餘重量與初始重量G,求出所要經過的時間?

6.1

範例一
範例二
輸入
1005
309
輸出
88.7379
24.1495
 =B4*(EXP(-0.693))^(C4/29)


6.2

範例一
範例二
輸入
88.7379100
24.149530
輸出
5
9

=10^(LOG(LN((C9/B9))/-0.693)+LOG(29))

init初始重量
N
WT餘重
100
5
88.7379
30
9
24.1946
init初始重量
WT餘重
N
100.000
88.7379
5.000014493
30.000
24.1946
8.999955993

程式 : 
#coding:Big5

import math

print ('  6、請問若有G公克之同位素鍶90(Sr90)(半衰期為29年)')
print ('  (1) 請列印出經過N年後,剩餘的重量為何?(剩餘量=初始重量G * C^(Y/H)')
print ('    ,H表放射性同位素之半衰期。C為e^-0.693,e=2.71828)')
print ('  (2) 輸入剩餘重量與初始重量G,求出所要經過的時間?')

while True:
    N = input('請輸入1 或2 :')
    try:
       N = int(N)
    except ValueError:
       print ('這是不合法的輸入.  請再輸入一次...')
       continue
    if (N ==1 or N==2) :
       break

#======================================
while N==1:
    while True:
        init = input('請輸入初始重量  數字:')
        try:
          init =float(init)
        except ValueError:
             print ('這是不合法的輸入.  請再輸入一次...')
             continue
        if init > 0 :
           break

    while True:
        NY = input('請輸入N年後   數字:')
        try:
          NY = int(NY)
        except ValueError:
             print ('這是不合法的輸入.  請再輸入一次...')
             continue
        if NY > 0 :
           break



    WT=init* (math.exp(-0.693)**(NY/29))
    #The method exp() returns returns exponential of x: ex.
    print("剩餘的重量為 : %8.4f"  % WT)
    N=3

#======================================
while N==2:
    while True:
        WT = input('請輸入剩餘的重量  數字:')
        try:
          WT = float(WT)
        except ValueError:
             print ('這是不合法的輸入.  請再輸入一次...')
             continue
        if WT > 0 :
           break

    while True:
        init = input('請輸入初始重量  數字:')
        try:
          init = float(init)
        except ValueError:
             print ('這是不合法的輸入.  請再輸入一次...')
             continue
        if init > 0 :
           break

   
    NY1= (math.log10(29))
    NY2= WT/init
    NY3=math.log(NY2)/-0.693
    NY=10**(math.log10(NY3)+NY1) 
    print("所要經過的時間 : %8.3f"  % NY)
    N=3

#======================================


    


結果 :
================== RESTART: D:/程式語言 Python 入門/50題/ex50-6.py ==================
  6、請問若有G公克之同位素鍶90(Sr90)(半衰期為29年)
  (1) 請列印出經過N年後,剩餘的重量為何?(剩餘量=初始重量G * C^(Y/H)
    ,H表放射性同位素之半衰期。C為e^-0.693,e=2.71828)
  (2) 輸入剩餘重量與初始重量G,求出所要經過的時間?
請輸入1 或2 :1
請輸入初始重量  數字:30
請輸入N年後   數字:9
剩餘的重量為 :  24.1946
>>> 
================== RESTART: D:/程式語言 Python 入門/50題/ex50-6.py ==================
  6、請問若有G公克之同位素鍶90(Sr90)(半衰期為29年)
  (1) 請列印出經過N年後,剩餘的重量為何?(剩餘量=初始重量G * C^(Y/H)
    ,H表放射性同位素之半衰期。C為e^-0.693,e=2.71828)
  (2) 輸入剩餘重量與初始重量G,求出所要經過的時間?
請輸入1 或2 :2
請輸入剩餘的重量  數字:24.1946
請輸入初始重量  數字:30
所要經過的時間 :    9.000
>>> 

沒有留言:

張貼留言

Messaging API作為替代方案

  LINE超好用功能要沒了!LINE Notify明年3月底終止服務,有什麼替代方案? LINE Notify將於2025年3月31日結束服務,官方建議改用Messaging API作為替代方案。 //CHANNEL_ACCESS_TOKEN = 'Messaging ...