【发布时间】:2014-10-27 01:17:45
【问题描述】:
我有这个代码。
#!/usr/bin/python
from optparse import OptionParser #import the OptionParser object from this module
parser = OptionParser()
parser.add_option("-f", "--first", dest="meal", help="prix repas", type="float")
parser.add_option("-s", "--second", dest="tip", help="le tip", type="float")
parser.add_option("-t", "--third", dest="tax", help="tax", type="float")
(options, args) = parser.parse_args()
tax_value = options.meal * options.tax
meal_with_tax = tax_value + options.meal
tip_value = meal_with_tax * tip
if not (options.meal and options.tip):
parser.error("You need to supply an argument for -s")
print "le prix du repas est '{}'.".format(options.meal)
print "Le tip est de '{}'.".format(options.tip)
print "Le tip est de '{}'.".format(options.tip)
每次我用下面的命令行运行它
./tip_re1_arg.py -s 5 2 3
我遇到了这个错误tax_value = options.meal * options.tax
TypeError: unsupported operand type(s) for *: 'NoneType' and 'NoneType'
为什么?看来我在类型方面做的一切都是正确的。还是我?
抱歉,我是 Python 的初学者。
【问题讨论】:
-
听听您认为
-s 5 2 3将如何由您的代码处理会很有趣。 5、2 和 3 中的哪一个应该是meal的值,哪个是tax的值? -
嗨 Chepner,我认为
optparse会像sys.argv一样做出反应。不幸的是,事实并非如此。 -
我在这里得到了这个练习docs.google.com/document/d/…
标签: python python-2.7