首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >while循环多条件Python

while循环多条件Python
EN

Stack Overflow用户
提问于 2011-08-24 09:06:09
回答 6查看 8.6K关注 0票数 0

您好,我有以下功能:

代码语言:javascript
运行
复制
def width(input,output,attr):
    import re
    input = input.strip()
    if re.search(attr, input):
        k = input.find(attr)
        for i in input:
            if i == attr[0]:
                j = k + len(attr)+1
                while ((j <= len(input)) |  (j != ' ') | (input[j+1] != "'")):
                    j = j + 1
                    #print j, output, input[j], len(input), k
                    output = output+input[j]
                break
            k = k + 1
    return output

print width('a=\'100px\'','','a')

我总是得到以下错误:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "table.py", line 45, in <module>
    print width(split_attributes(w,'','<table.*?>'),'','width')
  File "table.py", line 24, in width
    while ((j <= len(input)) |  (j != ' ') | (input[j+1] != "'")):
IndexError: string index out of range

我试着用or代替|,但它不起作用!

EN

回答 6

Stack Overflow用户

发布于 2011-08-24 12:35:13

代码语言:javascript
运行
复制
while ((j <= len(input)) |  (j != ' ') | (input[j+1] != "'")):

0)您应该使用or

1)您不应该使用input作为变量名;它隐藏了一个内置函数。

2) j为整数,不能等于' ',测试无用。

3)当j == len(input)时,j <= len(input)会通过。字符串的长度不是字符串的有效索引;长度为N的字符串的索引范围是从0到(N - 1 ) (也可以使用从-1到-N的负数,从末尾开始计数)。当然,j+1也不能工作。

4)我不知道你到底想做什么。你能用语言解释一下吗?如上所述,这不是一个很好的问题;让代码停止抛出异常并不意味着它更接近正常工作,也不意味着它更接近成为好的代码。

票数 1
EN

Stack Overflow用户

发布于 2011-08-24 09:13:04

看起来j+1是一个大于或等于字符串长度(input)的数字。确保构建while循环,使j < (len(input) - 1)始终为真,这样就不会出现字符串索引超出范围的错误。

票数 0
EN

Stack Overflow用户

发布于 2011-08-24 09:14:20

如果是j >= len(input) - 1,那么j+1肯定是越界的。另外,使用or而不是|

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7169348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档