2016-07-23 47 views
-4

我的代碼在while循環中。 它基本上會嘗試類似captcha。在python中重新啓動一個函數

所以,我想是這樣的

def loop(): 
    toplam = 0 
    global sayilar 
    x = br.open(something) 
    html = x.read() 
    sayilar = map(str.strip,''.join(kod.findall(html)).split("\xc4\x84\xc5\x95\xc5\xa3\xc4\xb1")) 
    print sayilar 
    for i in sayilar: 
     if i in diction: 
      toplam += diction[i] 
     else 
      #break the function 








if __name__ == "__main__": 
    giris() 
    while 1: 
     loop() 

無法找到在詞典中的數字,你會打破功能並重新啓動該功能,因爲功能是在while循環。

+3

什麼是你的問題? –

+0

如何打破功能?其他:#破解功能 –

+0

爲什麼不使用break? –

回答

0

好的找到了一個重新啓動它的好方法。

class CustomError(Exception): 
    def __init__(self, arg): 
     # Set some exception infomation 
     self.msg = arg 
def loop(): 
    toplam = 0 
    global sayilar 
    x = br.open(something) 
    html = x.read() 
    sayilar = map(str.strip,''.join(kod.findall(html)).split("\xc4\x84\xc5\x95\xc5\xa3\xc4\xb1")) 
    print sayilar 
    for i in sayilar: 
     if i in diction: 
      toplam += diction[i] 
     else 
      raise CustomError('Kelime Dictionaryde bulunamadi') 








if __name__ == "__main__": 
    giris() 
    while 1: 
     try: 
      loop() 
     except CustomError, arg: 
      print "Can't find in dictionary" 
0

你可以從字面上使用break。通過使用break,您可以立即停止循環。稍後您會看到使用return

for i in sayilar: 
    if i in diction: 
     toplam += diction[i] 
    else: 
     return None 
     break 
return True    # Anything but None will work in place of True 

這正好同爲while循環:

while True: # Use True instead of 1 
    loop() 
    if loop() == None:   # The function call is equal to what it returned 
     break 
    else: 
     continue     # Optional else statement: continues loop if loop() != None 
+0

代碼不僅僅是這個。這只是其中的一部分。對不起,誤解 –

+0

也不存在。嘗試/除了在while 1,所以它重試該功能。 –

+0

檢查我的編輯... –