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)))
4

1 に答える 1

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または、正でない入力で行ったように、エラー メッセージを出力した後に行うこともできます。

于 2013-03-20T19:49:29.767 に答える