1

我尝试运行以下代码,该代码位于 Bash 脚本中。

NUMBER=600
LOSS_RATE=0,3
TOT_PKT=100

test=$(python -c "from math import ceil; print ceil($NUMBER * 500.0)")
test2=$(python -c "from math import ceil; print ceil($NUMBER * $LOSS_RATE)")
echo $test
echo $test2

我打印出以下内容:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
TypeError: ceil() takes exactly one argument (2 given)
300000.0

第一个 Python 命令被执行,但第二个导致给定的 TypeError。我该怎么做才能解决这个问题?

4

1 回答 1

2

Python 使用.小数点作为,参数分隔符。因此,如果您使用LOSS_RATE=0.3一切都应该可以正常工作:

> NUMBER=600
> LOSS_RATE=0.3
> python -c "from math import ceil; print ceil($NUMBER * $LOSS_RATE)"
180.0

问题在于 shell 脚本。echo而不是python -c代码,你会看到它:

> echo "from math import ceil; print ceil($NUMBER * $LOSS_RATE)"
from math import ceil; print ceil(600 * )

你从不定义LOSS_RATE. 但是,这会导致 SyntaxError。由于您收到不同的错误,因此听起来像是LOSS_RATE设置为包含逗号的内容。

于 2012-05-09T12:12:55.767 回答