Python 从 if 语句中断到 else

Jim*_*Jim 7 python if-statement break

(我是 Python 新手,因此对这个基本问题表示歉意,由于某种原因我找不到答案。)

我有一个if带有/块if语句的嵌套语句。在嵌套语句中,如果它符合条件,我希望代码中断到该语句。但是,当我在嵌套中放入 a时,我不确定它是否违反了语句。ifelse ifelsebreakifelse

我想按给定字符串的字母顺序查找最长的子字符串s. 这是我的代码:

s = 'lugabcdeczsswabcdefghij'
longest = 1
alpha_count = 1
longest_temp = 1
longest_end = 1
for i in range(len(s)-1):
    if (s[i] <= s[i+1]):
        alpha_count += 1
        if (i+1 == (len(s)-1)):
            break
    else:
        longest_check = alpha_count
        if longest_check > longest:
            longest = longest_check
            longest_end = i+1
        alpha_count = 1
print(longest)
print('Longest substring in alphabetical order is: ' + 
    s[(longest_end-longest):longest_end])
Run Code Online (Sandbox Code Playgroud)

(是的,我意识到这里肯定有很多不必要的代码。仍在学习中!)

在这个嵌套if

if (i+1 == (len(s)-1)):
            break
Run Code Online (Sandbox Code Playgroud)

...if True,我希望代码中断到else语句。不过,它似乎并没有中断到那个部分。有什么帮助吗?

Kaf*_*afo 2

break当你想跳出循环而不是 if 语句时使用。您可以使用另一个if语句来为您执行此逻辑,如下所示:

if (s[i] <= s[i+1]):
    alpha_count += 1
elif (i+1 == (len(s)-1)) or (add boolean expression for else part in here too something like s[i] > s[i+1]):
    longest_check = alpha_count
    if longest_check > longest:
        longest = longest_check
        longest_end = i+1
    alpha_count = 1
Run Code Online (Sandbox Code Playgroud)

这段代码正在做的是评估两个布尔值,两者都是针对该else部分的。但是,它说要么在else从第一个开始的情况下执行if,要么在(i+1 == (len(s)-1))