我试图编写一个简短的程序来计算著名的德雷克方程。我让它接受整数输入、小数输入和小数输入。但是,当程序尝试将它们相乘时出现此错误(在我输入所有必要的值后立即发生错误):
Traceback (most recent call last)
File "C:/Users/Family/Desktop/Programming/Python Files/1/DrakeEquation1.py", line 24, in <module>
calc() #cal calc to execute it
File "C:/Users/Family/Desktop/Programming/Python Files/1/DrakeEquation1.py", line 17, in calc
calc = r*fp*ne*fl*fi*fc*l
TypeError: can't multiply sequence by non-int of type 'str'
我的代码如下:
def intro():
print('This program will evaluate the Drake equation with your values')
def calc():
print('What is the average rate of star formation in the galaxy?')
r = input()
print('What fraction the stars have planets?')
fp = input()
ne = int(input('What is the average number of life supporting planets (per star)?'))
print('What fraction of these panets actually develop life')
fl = input()
print('What fraction of them will develop intelligent life')
fi = input()
print('What fraction of these civilizations have developed detectable technology?')
fc = input()
l = int(input('How long will these civilizations release detectable signals?'))
calc = r*fp*ne*fl*fi*fc*l
print('My estimate of the number of detectable civilizations is ' + calc + ' .')
if __name__=="__main__":
intro() #cal intro to execute it
calc() #cal calc to execute it
我需要更改什么才能解决此问题?
请您参考如下方法:
您需要将输入值转换为 float 。
r = float(input())
(注意:在低于 3 的 Python 版本中,使用 raw_input 而不是 input。)
其他变量依此类推。否则,您将尝试用一个字符串乘以一个字符串。
编辑:正如其他人指出的那样,calc 也不能使用 + 运算符连接到周围的字符串。为此使用字符串替换:
print('My estimate of the number of detectable civilizations is %s.' % calc)
