Jos*_*osh 0 python math python-3.x
我正在用Python编写我的第一个程序,我收到一个错误:
"TypeError: unsupported operand type (s) for /: 'str' and 'str'
Run Code Online (Sandbox Code Playgroud)
这就是我正在做的事情:
import sys
import math
import scipy.stats import norm
S_t = sys.argv[1];
K = sys.argv[2];
r = sys.argv[3];
T = sys.argv[4];
sigma_0 = sys.argv[5];
d1 = (math.log(S_t/K) + (r - pow(sigma_0, 2)/2)*T)/(simga_0*math.sqrt(T));
x = norm.cdf(d1);
Run Code Online (Sandbox Code Playgroud)
我不确定我的错误在哪里.另外,x = norm.cdf(d1)计算累积规范的最佳方法是什么?
问题是S_t并且K是字符串,因为命令行参数是字符串.
如果你想将它们转换为其他类型,你必须告诉Python如何/转换什么.例如:
S_t = float(sys.argv[1])
K = float(sys.argv[2])
r = float(sys.argv[3])
T = float(sys.argv[4])
Run Code Online (Sandbox Code Playgroud)
同时,值得学习自己调试.当你在这样的长行中得到一个错误,并且你无法分辨它的错误部分时,将其分解.如果你有这个:
d1 = (math.log(S_t/K) + (r - pow(sigma_0, 2)/2)*T)/(simga_0*math.sqrt(T))
Run Code Online (Sandbox Code Playgroud)
尝试将其分解为
d1a = math.log(S_t/K)
d1b = (r - pow(sigma_0, 2)/2)*T)/(simga_0*math.sqrt(T))
d1 = d1a + d1b
Run Code Online (Sandbox Code Playgroud)
现在,看看错误是否在d1a或d1b.从它进入d1a,再次分解:
d1a1 = S_t/k
d1a = math.log(d1a1)
Run Code Online (Sandbox Code Playgroud)
现在你可以看到它了d1a1.这更容易弄明白 - 如果你仍然无法弄明白,你可以在这里发布一个更短的问题:
import sys
S_t = sys.argv[1]
K = sys.argv[2]
d1a1 = S_t/k
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
757 次 |
| 最近记录: |