我对编程很新。这是我得到的任务:
作业规格
对于以下每个里氏测量仪测量,您的程序 将执行适当的计算并显示等效值 以焦耳为单位的能量和以吨为单位的爆炸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)
您的计划将会:
提示用户输入里氏测量值;
接受表示该测量值的浮点值(这个 必须经过验证,以便只输入有效数字);
执行适当的计算;
以焦耳和吨为单位显示等量的能量 爆炸了该用户输入值的TNT。
作业说明
里氏震级是量化地震震级的一种方法 使用基数为10的对数标度。幅度定义为 a测量的波幅比的对数 地震仪的幅度任意小。一场地震 里氏震级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'
由于
答案 0 :(得分:0)
你问RichterScale它是否是一个数字,如果它是,你继续把它当作一个数字,当你还没有转换它时。尝试将其转换为浮动。
energy = 10**(1.5*(float(RichterScale))+4.8)