2015-09-08 132 views
-2

我對編程相當陌生。這是我得到的分配:爲什麼我得到這個錯誤? Python(newb)

分配規格

以下的每一個里氏震級測量,你的程序 將執行相應的計算和焦耳和噸的顯示相當於 的能量爆炸TNT:

 1.0 

 5.0 

 9.1 (Indonesia earthquake, 2004) 

 9.2 (Alaska earthquake, 1964) 

 9.5 (Chile earthquake, 1960; largest ever measured) 

 asdf (an invalid value) 

你的程序,那麼:

提示用戶EN里氏等級測量;

接受表示該測量的浮點值(此 必須經過驗證,以便僅輸入有效數字);

執行適當的計算;

顯示用於該用戶輸入值的分解TNT的等效能量,以焦耳和噸爲單位 。

分配筆錄

里氏是量化使用base-10對數級的地震 的大小的方式。幅度被定義爲由地震儀測量的波的幅度與任意小的幅度的比率的對數。在里氏震級5.0上測得的地震振幅是震動幅度的10倍,大於測量4.0時的振幅,相當於放大能量的31.6倍。

能量= 10 ^(1.5 *里克特)4.8

其中能量在焦耳測量和里氏是里氏 測量(:在釋放持續 特定里氏測量焦耳的能量由下式給出通常在1-10的範圍內作爲浮點數 )。一噸爆炸TNT產量爲4.184x109焦耳。因此,你可以將以焦耳釋放的能量與噸爆炸TNT相關聯。

這是我的代碼:

run="yes" 
    vr=1 
    while run == "yes": 

    while vr==1: 
     RichterScale = (input("Please enter the value for the Richter magnitude:")) 
     if RichterScale.isdigit(): 
       energy = 10**(1.5*RichterScale+4.8) 
       print(("Energy released:"),energy,"Joules") 
       vr=2 
     else: 
      vr=1 

    run=input("Would you like to run this program again? yes/no: ") 
print("Goodbye") 

這是我的錯誤:

Please enter the value for the Richter magnitude:t 
Please enter the value for the Richter magnitude:t 
Please enter the value for the Richter magnitude:3 

Traceback (most recent call last): 
    File "C:/Python34/python bridgin unit.py", line 8, in <module> 
    energy = 10**(1.5*RichterScale+4.8) 
TypeError: can't multiply sequence by non-int of type 'float' 

感謝

+2

'RichterScale'是一個字符串;你會期待什麼,例如1.5 *'foo''是? – jonrsharpe

+1

@jonrsharpe'foofc' ofcourse。 Point當然是'str.isdigit()'檢查字符串是否由數字組成,但不同於'isinstance(RichterScale,int)'。 –

+1

另外,請注意「9.1」。isdigit()'計算爲'False'... – jonrsharpe

回答

0

你問RichterScale如果它是一個數字,如果是,你繼續把它當作一個數字來處理,當你尚未轉換它的時候。嘗試將其轉換爲浮動。

energy = 10**(1.5*(float(RichterScale))+4.8)