标题几乎概括了我希望发生的事情。
这是我所拥有的,虽然程序不会在非正整数上爆炸,但我希望用户被告知非正整数基本上是无稽之谈。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-g", "--games", type=int, default=162,
help="The number of games to simulate")
args = parser.parse_args()
和输出:
python simulate_many.py -g 20
Setting up...
Playing games...
....................
带有负数的输出:
python simulate_many.py -g -2
Setting up...
Playing games...
现在,显然我可以添加一个if来确定if参数。games
是否定的,但我很好奇是否有办法在argparse
级别捕获它,以便利用自动使用打印。
理想情况下,它会打印类似的东西:
python simulate_many.py -g a
usage: simulate_many.py [-h] [-g GAMES] [-d] [-l LEAGUE]
simulate_many.py: error: argument -g/--games: invalid int value: 'a'
像这样:
python simulate_many.py -g -2
usage: simulate_many.py [-h] [-g GAMES] [-d] [-l LEAGUE]
simulate_many.py: error: argument -g/--games: invalid positive int value: '-2'
现在我正在这么做,我想我很高兴:
if args.games <= 0:
parser.print_help()
print "-g/--games: must be positive."
sys.exit(1)
如果arg有一个可预测的最大值和最小值,那么最快捷的方法就是使用选项
和范围
parser.add_argument('foo', type=int, choices=xrange(0, 1000))
type
将是处理条件/检查的推荐选项,如Yuushi的答案所示。
在特定情况下,如果已知上限,也可以使用choices
参数:
parser.add_argument('foo', type=int, choices=xrange(5, 10))
注意:对于python 3. x使用range
而不是xrange
这应该可以利用type
。您仍然需要定义一个实际的方法来决定这一点:
def check_positive(value):
ivalue = int(value)
if ivalue <= 0:
raise argparse.ArgumentTypeError("%s is an invalid positive int value" % value)
return ivalue
parser = argparse.ArgumentParser(...)
parser.add_argument('foo', type=check_positive)
这基本上只是argparse
上文档中的perfect\u square
函数的一个改编示例。
问题内容: 标题几乎总结了我想发生的事情。 这就是我所拥有的,虽然程序不会在非正整数上崩溃,但我希望通知用户非正整数基本上是无稽之谈。 并输出: 输出为负: 现在,显然我可以添加一个if来确定是否为负,但是我很好奇是否有一种方法可以将其捕获到该级别,以便利用自动用法打印。 理想情况下,它将打印类似于以下内容的内容: 像这样: 现在我正在这样做,我想我很高兴: 问题答案: 这应该是可以利用的。您仍然
问题内容: 我想知道与int相比,java是否自动将Integer转换为int?还是==尝试比较原始元素上的引用? 这是真的吗?还是我需要做? 问题答案: 是的,使用参数进行比较时,如有必要,将取消装箱。 Java语言规范的相关部分: 15.21.1数值相等运算符==和!= 如果相等运算符的操作数都是数字类型,或者一个是数字类型,而另一个可以转换(第5.1.8节)为数字类型,则对操作数(第5.6.
我试图在JavaFX中创建一个只接受整数值的TextArea?有谁能给我一些建议,告诉我如何实现这一点吗?
问题内容: 大家好,所以我试图允许一些文本输入在发送之前经过正则表达式检查。我希望文本仅包含AZ,0-9和空格“”字符。现在是我的代码: 但是,当我输入“这是一个测试”之类的内容时,这仍然会给出结果 有任何想法吗?谢谢大家 问题答案: 您不在正则表达式中包含空格。请尝试以下操作:
问题内容: 在angularjs中,有任何可用的功能,仅允许将数字键入文本框中,例如 问题答案: 此功能正是您所需要的。http://docs.angularjs.org/api/ng.directive:input.number 编辑: 您可以将jquery插件包装到指令中。我在这里创建了一个示例:http : //jsfiddle.net/anazimok/jTJCF/ HTML: CSS:
问题内容: 我有一个组件和一个组件,当有不是组件的子代时,我想抛出一个错误。这可能吗,还是我想解决错误的问题? 问题答案: 您可以为每个孩子使用displayName,可通过以下类型进行访问: