2013-10-28 72 views
0

我試圖添加驗證到我的應用程序在Python中。雖然循環驗證在python

基本上我想確保他們的輸入是一個數字,如果不是,它應該不斷地詢問他們輸入的問題,直到他們得到它。

這就是我得到的只能用於2次嘗試,我相信它是因爲它檢查它是否爲空。

我知道這是很多代碼。不確定另一種方式來做到這一點,有什麼想法?

while amount != "": 
    try: 
     val = int(amount) 
     while counter < int(amount): 
      counter = counter + 1 
      ran = ran + 1 
      num3 = input(str(ran) + ". Input: ") 
      try: 
       val = int(num3) 
      except ValueError: 
       num3 = input(str(ran) + ". Input: ") 
      numbers.append(num3) 
     print("") 
     home() 
    except ValueError: 
     amount=input("How many numbers are in your list? ") 
     while counter < int(amount): 
      counter = counter + 1 
      ran = ran + 1 
      num3 = input(str(ran) + ". Input: ") 
      try: 
       val = int(num3) 
      except ValueError: 
       num3 = input(str(ran) + ". Input: ") 
      numbers.append(num3) 
     print("") 
     home() 
+0

是什麼'家'功能呢? –

+0

只需重新啓動。但是這與錯誤沒有多大關係。 – user2812028

+0

我不知道該函數應該做什麼,因爲似乎有一些嵌套的值要求。兩次相同的代碼似乎暗示你正在做的事情比必要的更復雜。 – dornhege

回答

1

如何回合

def get_int_input(txt): 
    x = raw_input(txt) 
    while not x.isdigit(): 
     x = raw_input("Invalid Input. %s"%txt) 
    return int(x) 

numbers = [get_int_input("%s input:"%i) for i in range(get_int_input("Enter Number Of values:"))] 

注意,這是基於我最好的你正在嘗試做的猜測,我可能不理解你正在嘗試做的