2013-03-20 75 views
1

當我在數組中插入一個字符串時,我希望發生的是它拒絕該字符串,並給出解釋數組中只允許整數的消息。而是重複之前插入的整數。當輸入一個字符串時,數組輸入第二個整數

import sys 

ArrayWidth = 9 

mmWidth = 22 

ArrayDivider = '=' * 33 
ArrayDivider = ArrayDivider.center(ArrayWidth) 

mmDivider = '=' * 28 
mmDivider = mmDivider.center(mmWidth) 

MaxAndMin = 'Maximum & Minimum' 
MaxAndMin = MaxAndMin.center(mmWidth) 

Array = 'Array' 
Array = Array.center(ArrayWidth) 

Numbers = [] 


while True: 
    NumberInput = input('Enter a whole number (Exit the loop by pressing "0"): ') 
    try: 
     NumberInput2 = int(NumberInput) 
     if NumberInput2 == 0: 
      break 
     if NumberInput2 <= 0: 
      print('Please enter a number greater then 0.'); 
      continue; 
    except ValueError: 
     print("Error. Non-numeric data was entered.") 
    except: 
     print("Error with input...") 
    Numbers.append(NumberInput2) 

print('\n'+ArrayDivider+Array+ArrayDivider) 
print(sorted(Numbers, key=int),'\n') 
print(mmDivider+MaxAndMin+mmDivider) 
print('Maximum Number = {}'.format(max(Numbers))) 
print('Minimum Number = {}'.format(min(Numbers))) 

回答

3

無論是否拋出異常,您都會做Numbers.append(NumberInput2)。當int增加ValueError,NumberInput2不會被重新分配並保留舊值。

試試這個:

while True: 
    NumberInput = input('Enter a whole number (Exit the loop by pressing "0"): ') 
    try: 
     NumberInput2 = int(NumberInput) 
     if NumberInput2 == 0: 
      break 
     if NumberInput2 <= 0: 
      print('Please enter a number greater then 0.'); 
      continue 
     Numbers.append(NumberInput2) 
    except ValueError: 
     print("Error. Non-numeric data was entered.") 
    except: 
     print("Error with input...") 

或者,你可以continue打印錯誤信息後,像你這樣非正輸入一樣。

+0

完美!感謝您的解釋。 – JordanDevelop 2013-03-20 19:52:01

相關問題