[英]Python built-in range function and variable values
我正在编写一个脚本,使用getopt提取命令行参数,限定提供的值,然后将这些值用作循环的限制。 代码片段如下:
try:
start_pod, end_pod, topo_value = map(int, args)
except ValueError, error_msg:
if 'invalid' in str(error_msg):
err_funct('Non-integer values supplied: {%s}' % args)
else:
err_funct(error_msg)
for pod in range(start_pod, end_pod):
print 'value of pod: %s' % pod
for switch in range(1,5):
print 'value of switch: %s' % switch
我遇到的问题是“范围”功能。 我想我将其传递给整数(map函数将字符串列表转换为整数),如果不是,我的try / except处理程序将通过我编写的错误函数退出,但是由于某些原因,这是行不通的。
如果我用正确数量的输入调用脚本,例如'some_script.py 1 1 5',则脚本不返回任何内容。
您对脚本的调用不正确:
>>> range(1,1)
[]
( start_pod
和end_pod
均为1)。
range(i,j)
函数返回以下列表[i, i + 1, .., j - 1]
。 或者,换句话说,总是删除终点。
尝试更改for pod in range...
的for pod in range...
行:
for pod in range(start_pod, end_pod + 1):
请确保您粘贴独立的示例。 很明显,您缺少关键部分-args设置为什么?
如果我天真地假设您为示例提供了映射,则直接将其映射到您的参数并在顶部添加:
args = ['1', '1', '5']
那么它的行为就像您刚才所说的-没有输出。
但是那可能不是您想要的,因为start_pod和end_pod相同。
如果相反,我会
args = ['1', '5', '1']
然后我得到输出。 哪些args通过给定的命令行到达您的代码(在该块之前在代码中打印repr(args)),您期望从中得到什么输出?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.