如何使用单独的变量编写代码,该变量跟踪';中断';是否遇到了语句?python

如何使用单独的变量编写代码,该变量跟踪';中断';是否遇到了语句?python,python,break,Python,Break,我看到了下面的文章“Python的隐藏宝石”,文章的作者在文章的最后一段说了以下几点:“记录是否遇到break语句的单独变量。”我无法与文章作者联系,要求他提供带有单独变量的示例代码,该变量跟踪是否遇到了break语句。 有人能为示例代码提供一个单独的变量来跟踪是否遇到了break语句吗? 在提供答案之前,请阅读下面的文章;文章的最后一段以“一个人可能会争论……”开头,谢谢 “隐藏的巨蟒宝石” 作者:Charudatta Manwatkar For Else循环 在Python中,可以向for循

我看到了下面的文章“Python的隐藏宝石”,文章的作者在文章的最后一段说了以下几点:“记录是否遇到break语句的单独变量。”我无法与文章作者联系,要求他提供带有单独变量的示例代码,该变量跟踪是否遇到了break语句。 有人能为示例代码提供一个单独的变量来跟踪是否遇到了break语句吗? 在提供答案之前,请阅读下面的文章;文章的最后一段以“一个人可能会争论……”开头,谢谢

“隐藏的巨蟒宝石” 作者:Charudatta Manwatkar

For Else循环

在Python中,可以向for循环添加else子句。只有在执行期间循环体中未遇到break语句时,才会触发else子句

my_list = ['some', 'list', 'containing', 'five', 'elements']

min_len = 3

for element in my_list:
    if len(element) < min_len:
        print(f'Caught an element shorter than {min_len} letters')
        break

else:
    print(f'All elements at least {min_len} letters long')
my_list=['some','list','containing','five','elements']
最小长度=3
对于my_列表中的元素:
如果长度(元素)<最小长度:
print(f'捕获的元素短于{min_len}个字母')
中断
其他:
打印(f'所有元素至少{min_len}个字母长')
输出:所有元素长度至少为3个字母

请注意,else缩进的级别是for,而不是if。这里,没有一个元素的长度小于3。因此,永远不会遇到break语句。因此,else子句将被触发(在for循环执行之后),并打印上面显示的输出

有人可能会说,这可以通过使用一个单独的变量来实现,该变量跟踪是否遇到了break语句。也许下一个阅读代码的人也不会那么困惑。尽管如此,我想知道还是不错的。

my_list=['some'、'list'、'containing'、'five'、'elements']
my_list = ['some', 'list', 'containing', 'five', 'elements']

min_len = 3
break_encountered=True
for element in my_list:
    if len(element) < min_len:
        print(f'Caught an element shorter than {min_len} letters')
        break

else:
    break_encountered=False
    print(f'All elements at least {min_len} letters long')

if break_encountered:
    print("A break is encountered")
else:
    print("no break encountered")
最小长度=3 break_=True 对于my_列表中的元素: 如果长度(元素)<最小长度: print(f'捕获的元素短于{min_len}个字母') 打破 其他: 遇到中断=错误 打印(f'所有元素至少{min_len}个字母长') 如果遇到中断,请执行以下操作: 打印(“遇到中断”) 其他: 打印(“未遇到中断”)
这就是你想要的?

my_list=['so'、'list'、'containing'、'five'、'elements']
my_list = ['so', 'list', 'containing', 'five', 'elements']

min_len = 3

num_of_breaks = {}

for element in my_list:
    if len(element) < min_len:
        print(f'Caught an element shorter than {min_len} letters')
        num_of_breaks[element] = "Break was encountered for this element"
        break

else:
    print(f'All elements at least {min_len} letters long')

track = print('No break occured') if len(num_of_breaks) == 0 else print("Break occured for: ", num_of_breaks)
最小长度=3 num_of_breaks={} 对于my_列表中的元素: 如果长度(元素)<最小长度: print(f'捕获的元素短于{min_len}个字母') num_of_breaks[元素]=“此元素遇到了中断” 打破 其他: 打印(f'所有元素至少{min_len}个字母长') track=打印(“未发生中断”),如果len(中断的数量)==0,则打印(“中断发生的原因:”,中断的数量)

第一个元素减少为2个字符,以查看效果

毅力再次获得回报

我最终与上述文章的作者取得了联系,并要求他向我提供示例代码,显示一个单独的变量,用于跟踪是否遇到了break语句。他提供的以下代码与我在Stack Overflow中得到的答案基本相同-谢谢,Stack Overflow成员-他还在文章中添加了代码:

my_list = ['some', 'list', 'containing', 'five', 'elements']

min_len = 3

no_break = True

for element in my_list:
    if len(element) < min_len:
        print(f'Caught an element shorter than {min_len} letters')
        no_break = False
        break

if no_break:
    print(f'All elements at least {min_len} letters long')
my_list=['some','list','containing','five','elements']
最小长度=3
无中断=正确
对于my_列表中的元素:
如果长度(元素)<最小长度:
print(f'捕获的元素短于{min_len}个字母')
无中断=错误
中断
如果没有中断:
打印(f'所有元素至少{min_len}个字母长')

尽管如此,代码将不再是for else循环。

break=False
<代码>如果…:断开=真;中断<代码>如果损坏:……!?正确,
for..else
不是一个非常常见的构造,但是如果您有人愿意实际阅读python文档,那么它是有很好的文档记录的。那么,你真正的问题是什么?@Mike Scotty…问题是,“有人能提供一个变量的例子来跟踪是否遇到了‘break’语句吗?”谢谢。你确实需要break还是继续??所有元素都大于您指定的最小值,它将永远不会进入if块。我认为本文的意思是使用变量而不是
else
@CrazyChucky…噢,我认为您是对的,因为我终于与文章作者取得了联系,他给我提供的代码显示了一个单独的变量,该变量跟踪是否遇到了“break”语句,并且没有其他变量。他还将代码添加到他的文章中。