繁体   English   中英

Continue 在这个简单的 Python function 中似乎不起作用

[英]Continue doesn't seem to work in this simple Python function

function 应该将字符串作为其输入并返回(如果字符串的所有成员都是数字)和该字符串的 integer 版本。 此示例中提供的字符串是一个 3 位数字。 该函数的 for 循环似乎只返回第一个数字,因此 continue 可能无法按预期工作。

e = '484'

def resolving(e):
    for i, o in enumerate(e):

        if o in "0123456789":

            s = []
            s.append(o)
            i += 1

            continue
                
        elif o not in "0123456789":
            print(type(e))
            return e

    k = str(s)
    y = k.replace("'","").replace("[","").replace("]","").replace(",","").replace(" ","")
    p = int(y)
    print(type(p))
    return p

print(resolving(e))

因为您在循环中创建了列表。 只是让它在循环之外。 此外,使用str(s)代替使列表的字符串表示形式的str.join因为它将列表的所有元素连接成一个字符串。 也不需要 continue 语句。 因为如果 if 为 True,elif 将不会运行。

for i, o in enumerate(e):
    s = []
    if o in "0123456789":
        s.append(o)
    else:
        print(type(e))
        return e
k = ''.join(s)
p = int(y)
return p

你已经在其中return ,所以当你第一次点击一个非数字字符时,你将返回该字符并退出。 如所写, continue 不会做任何事情,因为以下elif不会被任何将您发送到 if 语句的第一个分支的字符命中。

冒着完全错过你想要做的事情的风险,整个 function 可能只是:

def resolve(e):
    """If e is convertible to an int, return its int value; 
    otherwise print its type and return the original value."""
    try:
        return int(e)
    except ValueError:
        print(type(e))
        return e

如果您仅将字符串的整数视为其 integer 版本,则可以使用isnumeric()检查:

def resolve(e)
    return int(''.join([i for i in e if i.isnumeric()]))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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