2017-10-29 111 views
0

我想破解一个循环,检查读取另一个模块中的行。我注意到这个函数遍历模块中的每一行代码,但它只返回最后一行的布尔值......我怎样才能停止循环,只要它看到一个错误,没有使用break函数?你不必担心打开文件,我有能力这样做,在Python中打破for循环?

read_lines = file_handle.readlines() 

for next_line in all_lines: 

    check = next_line[0] 

    if (check == ' '): 
     result = False 

    else: 
     result = True 
return result 
+0

*不使用中断功能*但为什么?然而,如果你真的不想使用'break',你可以将你的for循环放在一个函数中并返回它。' – ZdaR

+0

'返回False if if ==''else True' –

+0

一个简单的'返回False'将完成这项工作。 –

回答

1

明白你想要返回正是这一点很重要,并在什么条件,因为这极大地影响你的函数返回和时间。例如,你是否想要检查是否check == ' '即使是单个案例?在这种情况下,一次回报就足够了。

for next_line in all_lines: 
    if next_line[0] == ' ': 
     return False 

return True 

或者,你可以使用any

return not any(x[0] == ' ' for x in all_lines) 

或者,它的对应all,用倒置条件:

return all(x[0] != ' ' for x in all_lines) 

注意str.isspace()是一个更Python检查字符串是否是空白字符的方法,如果是gh检查所有空白字符(包括制表符和换行符,而不仅仅是空白字符)。

+0

呃......因为我在跑过所有的路线,我猜测它不止一种情况?我想用你的第三种方法,但我不认为它适用于多种情况? –

+0

编辑:Nvm,它的工作原理...非常感谢你! –

+0

你能解释为什么当它运行通过时它不输出返回true吗?我不明白这个背后的算法 –

0

你可以在你的代码添加一个return语句,因为它找到了匹配

read_lines = file_handle.readlines() 

for next_line in all_lines: 

    check = next_line[0] 

    if (check == ' '): 
     result = False 
     #add a return here 
     return result 
    else: 
     result = True 
将尽快退出功能

return result

+0

有没有办法做到这一点只有一个返回语句? –

+0

@DaquarisGeorgino对我来说这似乎不正确。 –

+0

@cᴏʟᴅsᴘᴇᴇᴅ:你可以解释什么是不正确的?你的意思是说它有两个返回语句? –