2015-12-20 23 views
3

當我輸入數字程序期望,一切運行平穩,但如果我輸入數字超出範圍,然後輸入數字程序期望,它返回無。任何一個可以解釋給我嗎? 感謝當我輸入數字超出範圍時,爲什麼它返回沒有類型?

def zadani_x(): 
    x=int(input("Turn for \"x\"(0-19): ")) 
    if x not in xx and x in yy: 
     xx.append(x) 
     return x 
    else: 
     print ("Try again") 
     zadani_x() 
xx=[] 
yy=[x for x in range(20)] 

回答

1

這裏的問題是給函數的遞歸調用,你不要在while循環回你從它

def zadani_x(): 
    x=int(input("Turn for \"x\"(0-19): ")) 
    if x not in xx and x in yy: 
     xx.append(x) 
     return x 
    else: 
     print ("Try again") 
     return zadani_x() #here was the problem 

在這種特殊情況下獲得的價值是更好的寫本如果你想一遍又一遍ejecute相同的代碼,因爲調用一個函數的成本更是一個循環,用循環更CREAR你的意圖:

def zadani_x(): 
    while True: 
     x=int(input("Turn for \"x\"(0-19): ")) 
     if x not in xx and x in yy: 
      xx.append(x) 
      return x 
     else: 
      print ("Try again") 

我不千牛ow這個函數的意圖是什麼,但在任何版本中,當xx具有yy的所有元素時,如果調用此函數,將陷入無限循環...

+0

感謝您解釋如此使用遞歸每次isn這不是個好主意。 循環僅適用於僅有5回合的簡單遊戲。 – china

相關問題