2012-12-04 43 views
0
try: 
    num = int(input("Give me an integer between 1 and 100:")) 
    while num > 100 or num < 1: 
     print ("Sorry, that is not an integer between 1 and 100. Try again.") 
     num = int(input("Give me an integer between 1 and 100:")) 
except: 
    print ("Sorry, that is not an integer between 1 and 100. Try again.") 
else: 
    print ("Thank you for your input") 

如何告訴Python如果輸入了諸如「pear」或「sd23214」之類的輸入,還打印出「sorry try again」?謝謝。python試試格式除外

+0

1.你爲什麼認爲這不是這樣做的? 2.你有什麼嘗試? 3.爲什麼你有沒有「如果」的「其他」? – Colleen

+0

只需在'while'循環中放入所有相關內容即可。 – irrelephant

+6

@Colleen,否則可以使用'except'和'for'循環以及'if' –

回答

3

只是包裝這一切在while循環

while True: 
    try: 
     num = int(input("Give me an integer between 1 and 100:")) 
     if num > 100 or num < 1: 
      print ("Sorry, that is not an integer between 1 and 100. Try again.") 
      continue 
    except ValueError: 
     print ("Sorry, that is not an integer between 1 and 100. Try again.") 
    else: 
     print ("Thank you for your input") 
     break 

大多數人可能不會使用這裏的else條款

while True: 
    try: 
     num = int(input("Give me an integer between 1 and 100:")) 
     if num > 100 or num < 1: 
      raise ValueError 
     print ("Thank you for your input") 
     break 
    except ValueError: 
     print ("Sorry, that is not an integer between 1 and 100. Try again.") 
+0

哦,太棒了,非常感謝! – user1762229

1

這是做一個更好/更簡單的方法(在我看來):

while True: 
    try: 
     num = int(input("Enter an integer between 1 and 100: ")) 
     if type(num) != int or num not in range(1, 101): #second argument is exclusive 
      raise ValueError 
     else: 
      print("Thank you.") 
      break 
    except ValueError: 
     print("Input must be an integer within 1 and 100. Try again.") 

使用range是一個很好的w唉,這樣做,而不是使用if num > 101 or num < 1

+0

在列表中查找元素(由'range'創建)的平均時間複雜度爲O(n),其中'n = len(list)',其中與其他語句('如果num> 101或num <1')具有O(1)的複雜性。所以不,這不是一個更好的解決方案。 – jojo