繁体   English   中英

Python内置范围函数和变量值

[英]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_podend_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM